HTTP Accept-Encoding 并发送未编码的数据

发布于 2024-11-19 17:21:02 字数 517 浏览 2 评论 0原文

我构建了一个用于压缩 HTTP 输出的模块。阅读规范,我没有发现一对夫妇的明确区别的事情:

Accept-Encoding:

这应该被视为与 Accept-Encoding: * 相同还是没有标头存在?

或者,如果我不支持 gzip,但收到如下标头怎么办:

Accept-Encoding: gzip

我应该返回 406 错误还是只返回未编码的数据?

编辑:

我已经阅读了规范几次。它提到了我的第一个案例,但它没有定义服务器的行为应该是什么。

我应该将这种情况视为标题不存在吗?或者我应该返回 406 错误,因为无法对给定字段值的内容进行编码(“”不是有效的编码)。

I building a module for compressing HTTP output. Reading the spec, I haven't found a clear distinction on a couple of things:

Accept-Encoding:

Should this be treated the same as a Accept-Encoding: * or as if no header is present?

Or what if I don't support gzip, but I get a header like this:

Accept-Encoding: gzip

Should I return a 406 error or just return the data unencoded?

EDIT:

I've read over the spec a few times. It mentions my first case, but it doesn't define what the behavior of the server should be.

Should I treat this case as if the header is not present? Or should I return a 406 error because there's no way to encode something given the field value ('' isn't a valid encoding).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等待圉鍢 2024-11-26 17:21:02

规范:14.3 Accept-Encoding 中写有所有内容:

Accept-Encoding 字段中的特殊“*”符号与任何
标题中未明确列出可用的内容编码
字段。

如果请求中存在 Accept-Encoding 字段,并且服务器无法发送根据 Accept-Encoding 标头可接受的响应,则服务器应该发送状态为 406(不可接受)的错误响应代码。

编辑:

如果 Accept-Encoding 字段值为空,则只有“身份”
编码是可以接受的。

在这种情况下,如果“身份”是可用的内容编码之一,那么服务器应该使用“身份”内容编码,除非它有附加信息表明不同的内容编码对客户端有意义。

什么是“身份”

身份
默认(身份)编码;不使用任何转换。此内容编码仅在 Accept-Encoding 标头中使用,不应在 Content-Encoding 标头中使用。

There is written everything in the Spec: 14.3 Accept-Encoding:

The special "*" symbol in an Accept-Encoding field matches any
available content-coding not explicitly listed in the header
field.

If an Accept-Encoding field is present in a request, and if the server cannot send a response which is acceptable according to the Accept-Encoding header, then the server SHOULD send an error response with the 406 (Not Acceptable) status code.

edit:

If the Accept-Encoding field-value is empty, then only the "identity"
encoding is acceptable.

In this case, if "identity" is one of the available content-codings, then the server SHOULD use the "identity" content-coding, unless it has additional information that a different content-coding is meaningful to the client.

What is "identity"

identity
The default (identity) encoding; the use of no transformation whatsoever. This content-coding is used only in the Accept- Encoding header, and SHOULD NOT be used in the Content-Encoding header.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文