Node.js Amazon S3查询字符串身份验证取消下载?

Node.js Amazon S3查询字符串身份验证取消下载?,node.js,amazon-web-services,amazon-s3,http-get,knox-amazon-s3-client,Node.js,Amazon Web Services,Amazon S3,Http Get,Knox Amazon S3 Client,我正在NodeJS中构建一个应用程序,使用。上传文件、移动文件等一切都很好 现在我想使用该机制来允许直接下载文件。为了做到这一点,我在NodeJS服务器上调用了一些代码,以调用Knox库并创建一个签名的url 代码如下所示: exports.getS3Policy = function(file) { var date = moment().add("min", 60).toDate(); var expires = new Date(date.getUTCFullYear(), da

我正在NodeJS中构建一个应用程序,使用。上传文件、移动文件等一切都很好

现在我想使用该机制来允许直接下载文件。为了做到这一点,我在NodeJS服务器上调用了一些代码,以调用Knox库并创建一个签名的url

代码如下所示:


exports.getS3Policy = function(file) {
  var date = moment().add("min", 60).toDate();
  var expires = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),  date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());

  return knoxClient.signedUrl(file, expires);
};
这段代码返回一个带有身份验证参数的正确URL。例如:

https://my-bucket.s3.amazonaws.com/some/folder/file.ext?Expires=1234567890&AWSAccessKeyId=ABCDEFGHIJKLMNO&Signature=someEncodedSignature

根据我阅读的所有文档,这是一个正确的URL。我没有收到来自亚马逊的关于这个url的任何错误。过期是正确的(我可以通过创建一个1秒的过期,然后得到一个过期错误来验证这一点)。文件路径也是正确的

但是,当我在浏览器中点击url时,我的浏览器(OSX上最新的Chrome浏览器)会取消文件的下载,即使我得到了带有正确文件信息的
200 ok
响应

以下是Chrome开发工具的请求信息副本(替换敏感位):

如您所见,服务器响应为“200OK”。341390的
内容长度
也是我试图下载的文件的正确长度-这是实际的文件大小。我得到的内容类型是“application/octetstream”,因为这就是我告诉S3存储文件的方式。。。基本上,我只想要原始下载

但在收到S3的响应后,Chrome取消了下载。这是devtools的屏幕盖:


FireFox和Safari都按预期下载了该文件。为什么chrome会取消下载?我做错了什么?是内容类型吗?或者?

当然,我一发布问题就找到了答案。。。这是Chrome中的一个bug

该修复程序将从Chrome/Chrome 30.x开始提供。请 如果在的版本中看到类似问题,请打开新问题 铬30或以上

支持的指示必须下载资源的方法 是使用内容处置标题字段 ()

看起来我必须让S3在响应中设置
内容配置


Request URL:https://my-bucket.s3.amazonaws.com/some/folder/file.ext?Expires=1234567890&AWSAccessKeyId=ABCDEFGHIJKLMNO&Signature=someEncodedSignature
Request Method:GET
Status Code:200 OK
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
DNT:1
Host:my-bucket.s3.amazonaws.com
Pragma:no-cache
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36
Query String Parameters
Expires:1234567890
AWSAccessKeyId:ABCDEFGHIJKLMNO
Signature:someEncodedSignature
Response Headers
Accept-Ranges:bytes
Content-Length:341390
Content-Type:application/octet-stream
Date:Tue, 10 Sep 2013 13:22:55 GMT
ETag:"fc4d24e752097f212e111f2736af7162"
Last-Modified:Tue, 10 Sep 2013 01:40:31 GMT
Server:AmazonS3
x-amz-id-2:some-id
x-amz-request-id:some-request-id