发送自定义 User-Agent 字符串以及我的 headers(获取)
Sending a custom User-Agent string along with my headers (fetch)
我在 React 中使用 fetch
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
因为我在 headers 中传递每个请求,我想我只是将 User-Agent
附加到 headers object,就像它在 various places在线:
fetch(url, {
Accept: 'application/json',
'Content-Type': 'application/json',
'User-Agent': 'MY-UA-STRING' // <---
})
但这行不通。据报道 here and here and here.
,我感觉这是因为提取 api 中的错误
有人知道如何使用 fetch
作为 headers
的一部分传递 UA 吗?
经过一些测试,Chrome 确实存在 User-Agent header 的错误。
这很可能是因为 User-Agent header 不久前(2015 年年中)在不允许的 header 列表中。
由于这个特定的 header 最近已从不允许的 header 列表中删除,因此 Firefox(从版本 43 开始)将允许您在获取调用中更改 User-Agent,但是Chrome 不会。
这是Firefox bug, and the Chromium bug
它最初被禁止的原因是,确实没有充分的理由使用 User-Agent header 发送任意数据,它应该用于发送实际的 User-Agent,和 in-browser 像 Fetch of XMLHttpRequest 这样的请求应该真的没有充分的理由去欺骗用户代理。
这个错误何时会在 Chrome 中被修复是任何人的猜测,但它确实是一个错误,因为不允许的 header 列表不再列出 User-Agent header,并且在 Fetch.
的选项 object 中指定时应该更改
作为旁注,您通常应该使用 headers
键
下的 Headers Interface, and include them in the options objects 创建 header
let headers = new Headers({
"Accept" : "application/json",
"Content-Type" : "application/json",
"User-Agent" : "MY-UA-STRING"
});
fetch(url, {
method : 'GET',
headers : headers
// ... etc
}).then( ...
我在 React 中使用 fetch
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
因为我在 headers 中传递每个请求,我想我只是将 User-Agent
附加到 headers object,就像它在 various places在线:
fetch(url, {
Accept: 'application/json',
'Content-Type': 'application/json',
'User-Agent': 'MY-UA-STRING' // <---
})
但这行不通。据报道 here and here and here.
,我感觉这是因为提取 api 中的错误有人知道如何使用 fetch
作为 headers
的一部分传递 UA 吗?
经过一些测试,Chrome 确实存在 User-Agent header 的错误。
这很可能是因为 User-Agent header 不久前(2015 年年中)在不允许的 header 列表中。
由于这个特定的 header 最近已从不允许的 header 列表中删除,因此 Firefox(从版本 43 开始)将允许您在获取调用中更改 User-Agent,但是Chrome 不会。
这是Firefox bug, and the Chromium bug
它最初被禁止的原因是,确实没有充分的理由使用 User-Agent header 发送任意数据,它应该用于发送实际的 User-Agent,和 in-browser 像 Fetch of XMLHttpRequest 这样的请求应该真的没有充分的理由去欺骗用户代理。
这个错误何时会在 Chrome 中被修复是任何人的猜测,但它确实是一个错误,因为不允许的 header 列表不再列出 User-Agent header,并且在 Fetch.
的选项 object 中指定时应该更改作为旁注,您通常应该使用 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( ...