为什么XMLHttpRequest规范禁止设置Accept-Encoding头?

3
今天,我想利用 Accept-Encoding 报头以 base64 的形式请求一张图片。结果发现,XMLHttpRequest 规范禁止设置该报头!
参考:http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader()-method 引用如下:
注意:上述报头由用户代理控制,让它控制传输的某些方面。这些可以在一定程度上保证数据完整性。以 "Sec-" 开头的报头名称不允许设置,以允许铸造新的报头,这些报头能够得到 XMLHttpRequest 保证不会出现。
为什么会有这样的规范呢?如果浏览器没有指定报头,提供默认值(例如: gzip,deflate,sdch)会更有意义。
2个回答

4

浏览器负责接收和处理响应。如果您无法对其进行任何处理,则使用XHR来表示它接受gzip并不是很有意义。您能设置自定义标题值吗?


谢谢!我本来希望有一个更好的理由,但我想这样也说得通。 - Stephen Bunch
2
这正是我现在正在苦恼的问题。:( - eltiare
问题在于服务器有时会出现异常,认为内容是gzip格式,但实际上并不是,然后设置Content-Encoding:gzip头部信息,导致浏览器“负责处理响应”的错误解压缩,从而引发错误。 - Colin D

0
为什么他们会写出这样的规范呢?
一句话:懒惰。
为什么要为每个可能只被像我们这样的少数人使用的头部添加额外的语义来描述安全可预测的浏览器行为,当他们可以在一个段落中声明所有头部都是禁止的呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接