JQuery Ajax请求:更改用户代理

JQuery Ajax请求:更改用户代理,jquery,ajax,user-agent,Jquery,Ajax,User Agent,我使用JQuery向我自己的Web服务发出AJAX请求。我需要为HTTP AJAX请求设置或修改用户代理HTTP头,如何以最简单的方式实现这一点 我尝试了一些用户提供的提示,使用setRequestHeader方法设置用户代理,但这不起作用。它实际上适用于其他新创建的头(如X-Test-Header),但不适用于用户代理如果您使用jQuery,请在ajaxSetup中设置请求头 $.ajaxSetup({ beforeSend: function(request) { request

我使用JQuery向我自己的Web服务发出AJAX请求。我需要为HTTP AJAX请求设置或修改
用户代理
HTTP头,如何以最简单的方式实现这一点


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

如果您使用jQuery,请在ajaxSetup中设置请求头

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

这是不可能的,不允许您更改XMLHttpRequests的用户代理。我不确定这对Internet Explorer是否有效,但w3c规定:

setRequestHeader()方法

[……]

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

如果标头与以下标头之一不区分大小写匹配,则终止这些步骤:

[……]

  • 用户代理

您可以使用jQuery发布到服务器端页面,然后服务器端页面可以修改
用户代理
标题,还可以向jQuery直接访问的页面发出请求。

一种方法是覆盖
窗口.navigator
对象的
\uu defineGetter\uu
方法中的本机代码

看看这个:

window.navigator.__defineGetter__('userAgent', function () {
    return "___I'M A GHOST___";
});
在控制台的前后运行
navigator.userAgent
进行检查

在铬上工作。我还没有检查其他浏览器


您可以在此处阅读更多信息:

查看此讨论查看下面的我的评论,对我无效。您尝试过此方法吗?使用jQuery1.5.2和Firefox4是不起作用的,用户代理仍然是默认的。在发出调用之前,我会在文档完全加载(document.ready)后调用ajaxSetup。这是一个简单的json请求(不是jsonp),在Mac浏览器中不起作用。一般来说,如果这是“根本不可能的”,我会说这根本不起作用。在我的node.js应用程序中,这对我来说是可行的,我可以不太关心w3c的规则。。您太棒了-谢谢。修改标题根本不起作用,但是如果您尝试添加新标题,此代码会起作用。2017年更新:您链接的W3C TR规范已移动到,它引用了,其中不包括
用户代理
。不再禁止
用户代理
的MDN。但是Chrome仍然拒绝,所以我不认为你的建议是无效的。任何看到这一点的人:请不要使用此解决方案(这不是解决方案的错,但它已被弃用):“警告:此功能已被弃用,取而代之的是使用对象初始值设定项语法或object.defineProperty()定义getterAPI。虽然此功能已广泛实现,但由于传统用法,ECMAScript规范中仅对其进行了描述。由于存在更好的替代方法,因此不应使用此方法。“(请参阅)。