Cloudflare 解压,然后重新压缩响应主体

Cloudflare 解压,然后重新压缩响应主体

我正在使用 Node.js/express,如果我设置了标题

Content-Type: application/json
Content-Encoding: gzip

并发送 JSON 数据的 gzip 压缩体,当不位于 Cloudflare 后面时,它可以按预期工作。

但是,如果在 Cloudflare 后面并且在设置中启用了 Brotli 压缩,Cloudflare 会解压我的 gzip 压缩数据并将其以 brotli 压缩的形式发送到客户端。

Cloudflare 文档声称尊重编码标头,并且在 gzip 或其他压缩的情况下避免压缩。

当然,Cache-Control: no-transform“修复”了这个问题。但为什么需要这样做呢?这是 Cloudflare 的错误还是我做错了什么?

答案1

来自文档

Cloudflare 将返回 brotli 重新编码的响应兼容的下列内容类型的客户端/浏览器:

text/html
text/richtext
text/plain
text/css
text/x-script
text/x-component
text/x-java-source
text/x-markdown
application/javascript
application/x-javascript
text/javascript
text/js
image/x-icon
image/vnd.microsoft.icon
application/x-perl
application/x-httpd-cgi
text/xml
application/xml
application/xml+rss
application/vnd.api+json 
application/x-protobuf 
application/json
multipart/bag
multipart/mixed
application/xhtml+xml
font/ttf
font/otf
font/x-woff
image/svg+xml
application/vnd.ms-fontobject
application/ttf
application/x-ttf
application/otf
application/x-otf
application/truetype
application/opentype
application/x-opentype
application/font-woff
application/eot
application/font
application/font-sfnt
application/wasm
application/javascript-binast 
application/manifest+json 
application/ld+json
application/graphql+json
application/geo+json

如果您不希望来自您的来源的特定响应被(重新)编码,您必须通过设置cache-control: no-transform标头来禁用此功能。

相关内容