我正在使用React中的提取
API,并且正在从JSONendpoint下拉一些数据。
作为请求的一部分,我想发送一个自定义用户代理
字符串。目前,当我检查我的请求时,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
因为我在每个请求中都会使用标题,所以我想我应该将User-Agent
附加到headers对象,就像在网上的各个地方所说的那样:
fetch(url, {
Accept: 'application/json',
'Content-Type': 'application/json',
'User-Agent': 'MY-UA-STRING' // <---
})
但这行不通。我有一种感觉,这是因为获取api中的一个错误,正如这里、这里和这里所报告的。
有人知道如何使用fetch
将UA作为标题的一部分传递吗?
经过一些测试,Chrome确实在用户代理头上有一个bug。
这很可能是因为不久前(2015年年中)用户代理标头在不允许标头列表中。
由于这个特定的头最近被从不允许的头列表中删除,Firefox(版本43)将允许您在获取调用中更改用户代理,但Chrome不会。
这是Firefox bug和Chromium bug
首先,它被禁止的原因是,实际上没有很好的理由使用用户代理头发送任意数据,它应该被用来发送实际的用户代理,并且在浏览器中请求(如获取XMLHttpRequest)实际上没有很好的理由欺骗用户代理。
当错误将被修复Chrome是任何人猜测,但它确实是一个错误,因为不允许的标题列表不再列出用户代理标题,它应该改变时,在Fetch的选项对象中指定。
作为旁注,您通常应该使用headers接口创建标题,并将其包含在标题下的options对象中
let headers = new Headers({
"Accept" : "application/json",
"Content-Type" : "application/json",
"User-Agent" : "MY-UA-STRING"
});
fetch(url, {
method : 'GET',
headers : headers
// ... etc
}).then( ...
问题内容: 我只是开始看一下Mattt出色的新Alamofire快速联网库,并且不确定如何将其与自定义标头一起使用。 我正在尝试从AFNetworking转换为Alamofire的代码是这样的: 问题答案: 根据官方文档,不建议修改会话配置: 不建议将其用于Authorization或Content- Type标头。而是分别使用URLRequestConvertible和ParameterEnco
初始化类时,我的实现代码如下。执行以下操作时发生错误。 请帮助初始化具有用户代理的 Web 驱动程序。我希望我能避免机器人自然刮擦。使用: “Mozilla/5.0 (视窗 NT 6.1;赢64;x64;rv:47.0) 壁虎/20100101火狐/47.0“ 作为代理
问题内容: 我使用自定义标头实现了POST请求,因为我们使用OAuth2,并且必须在标头内的每个请求中发送访问令牌。在这种情况下,我必须使用自定义标头。 HTTP标头字段的访问令牌值对我不起作用。服务器生成错误,因为带有访问令牌的OAuth标头信息不可用。 但是我的代码有什么错误呢? 这是我当前的代码: 问题答案: 这是我如何与自定义标头一起使用的示例: 现在,无论何时发出请求,它都会使用指定的标
我正试图发送一个授权令牌,但我的服务器不知何故没有接收它。 //service.ts } //endpoint //标记过滤器