Tôi đang cố gắng tạo một URL S3 đã ký bằng cách sử dụng Javascript & NodeJS. Tôi đã sử dụng thông số this .Tạo một URL S3 có chữ ký với Javascript
var crypto = require('crypto'),
date = 1331290899,
resource = '/myfile.txt',
awskey = "XXXX",
awssecret = "XXXX";
var stringToSign ='GET\n\n\n' + date + '\n\n' + resource;
var sig = encodeURIComponent(crypto.createHmac('sha1', awssecret).update(stringToSign).digest('base64'));
var url = "https://s3-eu-west-1.amazonaws.com/mybucket" +
resource + "?AWSAccessKeyId=" + awskey + "&Expires="+ date +
"&Signature="+ sig
này tạo ra một url tương tự như sau:
https://s3-eu-west-1.amazonaws.com/mybucket/test.txt?AWSAccessKeyId=XXXXXX&Expires=1331290899&Signature=EciGxdQ1uOqgFDCRon4vPqTiCLc%3D
Tuy nhiên, tôi nhận được lỗi sau khi truy cập vào nó:
SignatureDoesNotMatch
The request signature we calculated does not match the signature you provided.
Check your key and signing method.
Tôi đang làm gì sai khi tạo chữ ký?
EDIT - mưu toan VỚI KNOX
Tôi bây giờ cố gắng sử dụng Knox để tạo ra một URL đã ký kết. Tôi cần phải thêm tiêu đề với yêu cầu bắt buộc tải xuống. Tôi đã chỉnh sửa như sau:
Added amazonHeaders: 'response-content-disposition:attachment',
để client.signedUrl- http://jsfiddle.net/BpGNM/1/
Added options.amazonHeaders + '\n' +
để auth.queryStringToSign
- http://jsfiddle.net/6b8Tm/
Thông điệp mà hiện đang được gửi đến auth.hmacSha1
để tạo ra các sig là:
'GET\n\n\n1321374212\nresponse-content-disposition:attachment\n/meshmesh-dev/test/Readme.md'
Sau đó tôi đã cố gắng truy cập URL mới của mình bằng số response-content-disposition=attachment
được thêm dưới dạng biến var. Tuy nhiên, tôi vẫn nhận được lỗi tương tự đã nêu ở trên.
Có cùng vấn đề với bạn, điều này có bao giờ được giải quyết không? –