gpt4 book ai didi

http - Content-Encoding : gzip 需要注意的事项

转载 作者:可可西里 更新时间:2023-11-01 15:10:06 27 4
gpt4 key购买 nike

我创建了一个托管在 S3 存储桶上的静态网站。我的 Assets 文件(css 和 js 文件)被缩小并使用 gzip 压缩。文件名本身是 file_gz.jsfile_gz.css 并带有 Content-Encoding: gzip header 。

到目前为止,我已经在各种浏览器上测试了该网站,它运行良好。 Assets 以其压缩版本交付,页面看起来没有任何不同。

我看到的唯一问题是,因为这是一个 S3 存储桶,所以当客户端(浏览器)不支持 gzip 编码时没有故障保护。相反,HTTP 请求将失败,并且不会对页面应用任何样式或 javascript 增强。

有人知道设置 Content-Encoding: gzip 有什么问题吗?所有浏览器都支持吗?是否需要附加任何其他 header 才能使其正常工作?

最佳答案

现代浏览器几乎全面支持编码内容。但是,假设所有用户代理都会这样做是不安全的。您的实现的问题是它完全忽略了 HTTP 的内置方法来避免这个问题:内容协商。您有几个选择:

  1. 您可以继续对问题视而不见,并希望访问您的内容的每个 用户代理能够解码您的 gzip 资源。不幸的是,情况几乎肯定不是这样。浏览器并不是唯一的用户代理,解决问题的“埋头苦干”方法很少是个好主意。

  2. 实现一个解决方案来协商您是否使用 Accept-Encoding header 提供 gzip 压缩响应。如果客户端根本不指定此 header 或指定它但未提及 gzip,则可以相当确定用户将无法解码 gzip 压缩的响应。在这些情况下,您需要发送未压缩的版本。

内容协商的来龙去脉超出了本答案的范围。您需要研究如何解析 Accept-Encoding header 并协商响应的编码。通常,内容编码是通过使用第三方模块(如 Apache 的 mod_deflate)来完成的。虽然我不熟悉 S3 在这方面的选项,但我怀疑您需要自己实现协商。

总而言之:在未先与客户端清除编码内容的情况下发送编码内容并不是一个好主意。

关于http - Content-Encoding : gzip 需要注意的事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12162273/

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