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

最后发布: 2014-03-12 19:41:42


问题

今天,我想利用Accept-Encoding标头将图像请求为base64。 找出来, XMLHttpRequest规范阻止设置该标头!

http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader()-method

注意:上面的标头由用户代理控制,以使其控制传输的那些方面。 这在一定程度上保证了数据完整性。 不允许设置以Sec-开头的标头名称,以允许铸造新的标头,这些新标头不能来自XMLHttpRequest。

他们为什么要在世界上编写这样的规范? 如果没有指定默认值(例如gzip,deflate,sdch ),则浏览器会提供更多的意义。

ajax http-headers xmlhttprequest w3c http-accept-encoding
回答

浏览器负责接受和处理响应。 例如,当您无法对XHR进行任何操作时,对其进行操作以说它接受gzip并没有多大意义。 您可以设置自定义标头值吗?


回答

他们为什么要在世界上编写这样的规范?

一言以蔽之: 懒惰

为什么要添加额外的语义来描述仅适用于像我们这样的少数人的每种可能的标头的安全可预测的浏览器行为,而他们只能声明一个段落中禁止的所有标头。