a53*_*416 10 javascript header http fetch reactjs
我fetch在React中使用API,我从JSON端点下载了一些数据.
作为我的请求的一部分,我想发送一个自定义User-Agent字符串.目前,当我检查我的请求时,UA字符串是:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Run Code Online (Sandbox Code Playgroud)
由于我在每个请求的标题中都有用,我想我只是附加User-Agent到header对象,就像它在网上各个 地方所说:
fetch(url, {
Accept: 'application/json',
'Content-Type': 'application/json',
'User-Agent': 'MY-UA-STRING' // <---
})
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我有一种感觉,这是因为fetch api中存在一个错误,正如此处以及此处和此处所报告的那样.
任何人都有关于如何通过UA作为headers使用的一部分的工作fetch?
经过一些测试,Chrome确实存在User-Agent标头的错误.
这很可能是因为User-Agent标头不久前(2015年中)位于不允许的标头列表中.
由于最近从不允许的标题列表中删除了此特定标题,因此Firefox(来自版本43)将允许您在提取调用中更改用户代理,但Chrome不会.
它首先被禁止的原因是,没有充分的理由使用User-Agent标头发送任意数据,它应该用于发送实际的User-Agent,以及浏览器内请求,如Fetch of XMLHttpRequest应该真的没有理由欺骗用户代理.
当任何人猜测错误将在Chrome中修复时,但它确实是一个错误,因为不允许的标头列表不再列出User-Agent标头,并且它应该在Fetch的options对象中指定时更改.
作为旁注,您通常应该使用Headers接口创建标题,并将它们包含在键下的选项对象中headers
let headers = new Headers({
"Accept" : "application/json",
"Content-Type" : "application/json",
"User-Agent" : "MY-UA-STRING"
});
fetch(url, {
method : 'GET',
headers : headers
// ... etc
}).then( ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9860 次 |
| 最近记录: |