Javascript 浏览器是否忽略了;“接受编码”;头球?
我有一个React应用程序,它通过以下方式从服务器获取数据:Javascript 浏览器是否忽略了;“接受编码”;头球?,javascript,reactjs,react-native,fetch,Javascript,Reactjs,React Native,Fetch,我有一个React应用程序,它通过以下方式从服务器获取数据: fetch('http://localhost:5000/records',{ method:'GET', headers:{ 'ACCEPT':'application/json', 'Content-Type':'application/json' } }) .then(response => response.json()) .then(data => {
fetch('http://localhost:5000/records',{
method:'GET',
headers:{
'ACCEPT':'application/json',
'Content-Type':'application/json'
}
})
.then(response => response.json())
.then(data => {
this.setState({
records: data,
});
});
}
检查网络活动(开发工具Chrome/Firefox),我看到:
我可以将“Accept Encoding”添加到我的请求头并给它任何值,或者我可以将其从头中删除。无论我做什么,检查网络活动总是显示我的请求头接受gzip、deflate和br。这正常吗?fetch是否有方法告诉服务器它不需要任何响应编码
我试着给gzip一个Q值0,如前所述,但我仍然在网络选项卡中看到相同的结果
headers:{
'ACCEPT':'application/json',
'Content-Type':'application/json',
'Accept-Encoding': 'gzip; q=0'
}
接受编码是有效的。JavaScript无法更改它
因为网页的作者不知道浏览器能够解码什么编码,所以设置它通常是没有用的。但是这个呢?“当客户机可以处理压缩内容时,客户机必须通过发送带有请求的Accept Encoding标头来通知服务器其功能。”-这是怎么回事?这与我说的没有矛盾。它特别支持此答案的第二段。服务器使用自定义编码实现并返回带有
内容编码:mycustomcompression
头的响应。客户端知道这一点(因为它们都是我的),并使用Accept Encoding:mycustomcompression
头提交请求。但是接受编码头似乎被忽略了。我在检查网络流量时只看到gzip、deflate和br。如果您编写了一个支持mycustomcompression
的自定义浏览器,那么它应该在Accept Encoding
头中发送,而无需客户端JS的干预。如果您还没有编写自定义浏览器,那么我看不出您如何能够在传输层添加对附加编码的支持,Accept Encoding
头适用于此。因此,通过说“客户端必须通过发送带有请求的Accept Encoding头通知服务器其功能”,他们的意思是“客户端”与浏览器本身一样,不是客户端/服务器应用程序,即react应用程序?