当前位置: 首页 > 知识库问答 >
问题:

将自定义用户代理字符串与我的头一起发送(获取)

斜单鹗
2023-03-14

我正在使用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作为标题的一部分传递吗?


共有1个答案

单于阳
2023-03-14

经过一些测试,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 //标记过滤器