JQuery Ajax请求:更改用户代理

时间:2011-04-24 16:52:55

标签: jquery ajax user-agent

我正在使用JQuery向我自己的Web服务发出一个AJAX-Request。我需要为HTTP-AJAX-Request设置或修改User-Agent HTTP-Header,如何以最简单的方式执行此操作?

我尝试了一些用户提供的提示,使用setRequestHeader方法设置User-Agent,但这不起作用。它实际上适用于其他新创建的标题(例如X-Test-Header),但它不适用于User-Agent

谢谢!

4 个答案:

答案 0 :(得分:28)

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

  

setRequestHeader()方法

     

[...]

     

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

     

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

     

[...]

     
      
  • 的User-Agent
  •   

答案 1 :(得分:10)

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

$.ajaxSetup({
  beforeSend: function(request) {
    request.setRequestHeader("User-Agent","InsertUserAgentStringHere");
  }
});

答案 2 :(得分:5)

好吧,你总是可以使用jQuery发布到服务器端页面,然后又可以修改User-Agent标头,并向页面发出请求,这些请求可以直接被jQuery访问

答案 3 :(得分:0)

执行此操作的一种方法是覆盖__defineGetter__对象的window.navigator方法中的本机代码。

检查一下:

window.navigator.__defineGetter__('userAgent', function () {
    return "___I'M A GHOST___";
});

在控制台中运行navigator.userAgent,然后进行检查。

在Chrome中工作。我没有检查其他浏览器。

您可以在此处了解更多信息:https://www.codeproject.com/Tips/1036762/Mocking-userAgent-with-JavaScript