Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome 在Chrome上从S3下载PDF时出现问题_Google Chrome_Download_Amazon S3_Content Type - Fatal编程技术网

Google chrome 在Chrome上从S3下载PDF时出现问题

Google chrome 在Chrome上从S3下载PDF时出现问题,google-chrome,download,amazon-s3,content-type,Google Chrome,Download,Amazon S3,Content Type,我在使用Chrome从AmazonS3下载PDF文件时遇到了一个问题 当我单击链接时,我的控制器将请求重定向到S3上的文件URL 它与Firefox完美配合,但与Chrome无关 但是,如果我执行右键单击->保存位置为将下载文件 甚至把S3URL复制粘贴到Chrome上也会导致一个空白屏幕 以下是curl返回的一些信息: Date: Wed, 01 Feb 2012 15:34:09 GMT Last-Modified: Wed, 01 Feb 2012 04:45:24 GMT Accept-

我在使用Chrome从AmazonS3下载PDF文件时遇到了一个问题

当我单击链接时,我的控制器将请求重定向到S3上的文件URL

它与Firefox完美配合,但与Chrome无关

但是,如果我执行右键单击->保存位置为将下载文件

甚至把S3URL复制粘贴到Chrome上也会导致一个空白屏幕

以下是curl返回的一些信息:

Date: Wed, 01 Feb 2012 15:34:09 GMT
Last-Modified: Wed, 01 Feb 2012 04:45:24 GMT
Accept-Ranges: bytes
Content-Type: application/x-pdf
Content-Length: 50024
Server: AmazonS3
我的猜测与内容类型有关。。。但是我所做的一切都没有起作用。

PDF文档的规范实际上是中定义的
application/PDF
——请注意,
application/x-PDF
,虽然在中经常遇到并作为媒体类型列出,但在中列出的官方文档中明显没有

我不知道为什么和什么时候
application/x-pdf
开始出现,但很明显,从今天开始

因此,通过相应地更改存储对象的媒体类型,您应该能够在Chrome中触发不同的行为

备选方案(用于经过身份验证的请求) 另一种方法是不让Chrome尝试打开它,这可以通过使用
GET
请求触发
Content-Diposition:attachment
标题来实现-请参阅S3文档,了解如何通过
response-Content-disposition
请求参数实现这一点,具体来说,
response content disposition=attachment
,如示例请求一节所示,参数改变了响应头的值

但这仅适用于经过身份验证的请求,请参阅“请求参数”一节:

注意

您必须使用授权标头对请求进行签名 或使用这些参数时的预签名URL。它们不能被使用 使用未签名(匿名)请求


有一个基于html的解决方案。由于chrome是HTML5的最新版本,我们可以使用全新的
download
属性



当我这样做时,我得到了“特定于请求的响应头不能用于匿名GET请求。”——我如何发出经过身份验证的请求?@Kerry:你可能是指另一种方法,对吧?不幸的是,这确实只适用于经过身份验证的请求;现在我已经用S3文档中的相应引用更新了我的答案,很抱歉在这里造成误导。