JQuery Ajax请求:更改用户代理

the*_*ega 14 ajax jquery user-agent

我正在使用JQuery向我自己的Web服务发出一个AJAX-Request.我需要User-Agent为HTTP-AJAX-Request 设置或修改HTTP-Header,我怎样才能以最简单的方式做到这一点?

我尝试了一些用户提供的提示使用setRequestHeaderMethod来设置User-Agent,但这不起作用.它确实适用于其他新创建的标题(如X-Test-Header),但它不起作用User-Agent.

谢谢!

the*_*ega 29

这根本不可能,您不能更改XMLHttpRequests的用户代理.我不确定这对Internet-Explorer是否有效,但是w3c 在这里指定:

setRequestHeader()方法

[...]

当调用setRequestHeader(header,value)方法时,用户代理必须运行以下步骤:[...]

如果header是以下标头之一的不区分大小写的匹配项,请终止这些步骤:

[...]

  • 用户代理

  • 2017更新:您链接的W3C TR规范已移至[此whatwg规范](https://xhr.spec.whatwg.org/#the-setrequestheader()-method),其中引用[此禁止标题名称列表在fetch规范中(https://fetch.spec.whatwg.org/#forbidden-header-name),它不包含`User-Agent`.MDN [明确确认](https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_​​header_name)不再禁止"User-Agent".Chrome仍然拒绝它,所以我认为你的建议还没有完全无效. (5认同)

Pet*_*son 10

如果您使用的是jQuery,请在ajaxSetup中设置请求标头.

$.ajaxSetup({
  beforeSend: function(request) {
    request.setRequestHeader("User-Agent","InsertUserAgentStringHere");
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 在我的node.js应用程序中为我工作,我可以更少关心w3c的规则..你真棒 - 谢谢. (6认同)

Luc*_*emy 5

好吧,你总是可以使用jQuery发布到服务器端页面,然后又可以修改User-Agent头文件,并且还可以向jQuery直接访问的页面发出请求.