gpt4 book ai didi

Firefox 无法解压 gzip 文件

转载 作者:行者123 更新时间:2023-12-02 12:00:10 32 4
gpt4 key购买 nike

我有 .gz 文件存储在 AWS s3 上。

使用 s3 REST-API,我生成指向各个文件的经过身份验证的链接。我还设置了内容 header 选项,以便请求这些 URL 的浏览器将解压缩并下载 gzip 压缩文件作为附件。

生成的 s3 url 如下所示:

https://MY_BUCKET.s3.amazonaws.com/PATH_TO/file.ext.gz
?AWSAccessKeyId=MY_KEY
&Expires=DATE_TIME
&Signature=MY_SIGNATURE
&response-content-disposition=attachment%3B%20filename%3D%22file.ext%22
&response-content-encoding=gzip
&response-content-type=application%2Foctet-stream
&x-amz-security-token=MY_TOKEN

链接在以下操作系统中的行为符合预期:(全部在 OSX 上)Chrome (42.0.2311)、Safari (8.0.6)、Opera (29.0)、

但不是 Firefox (38.0.1)

Firefox 正确下载并重命名文件,但无法解压缩 gzip 压缩文件。

对经过身份验证的 URL 的 GET 请求的响应 header 如下所示:

Accept-Ranges:bytes
Content-Disposition:attachment; filename="file.ext"
Content-Encoding:gzip
Content-Length:928
Content-Type:application/octet-stream
Date:SOME_DATE_TIME
ETag:"MY_ETAG"
Last-Modified:SOME_OTHER_DATE_TIME
Server:AmazonS3
x-amz-expiration:expiry-date="ANOTHER_DATE_TIME"
x-amz-id-2:MY_AMZ_ID
x-amz-request-id:MY_AMZ_REQUEST_ID
x-amz-server-side-encryption:AES256

Firefox 是否会查找不同的 header 和/或 header 值来指示解压缩?

最佳答案

解决方案似乎是从文件名末尾删除 .gz

当您打算让最终用户下载并最终得到一个文件时,在 .gz 文件上设置 Content-Encoding: gzip 是一种常见的错误配置。 .gz 文件;例如下载.tar.gz源码包。

这不是您正在做的事情...本质上是相反的...但我怀疑您正在尝试解决该问题。

事实上,我描述的配置只应该是当你压缩一个已经压缩的文件时的情况(当然,你不应该这样做)......但它被(iirc)长期根深蒂固默认 Apache Web 服务器配置。旧的错误报告似乎表明 Firefox 开发人员很难掌握 Content-Encoding: gzip 应该做什么,特别是在下载方面。他们似乎有点着迷,认为浏览器在保存到磁盘时不应该撤消内容编码,因为保存到磁盘与“渲染”下载的内容不同。对我来说,这是无稽之谈,是对 RFC 的过于字面解释。

我怀疑你所看到的是那个老问题的遗留问题。

与您的概念相反,存储带有 Content-Encoding: gzip 不带 .gz 扩展名的文件是非常正确的...可以说,事实上,在没有 .gz 扩展名的情况下存储此类内容是正确的,因为 .gz 意味着(至少对于 Firefox 而言,显然)下载用户应该希望下载压缩内容并以压缩形式保存。

关于Firefox 无法解压 gzip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292868/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com