JQuery Ajax 请求:更改用户代理

发布于 2024-11-03 09:42:18 字数 298 浏览 3 评论 0原文

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

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

I'm using JQuery to issue an AJAX request to my own Webservice. I need to set or modify the User-Agent HTTP-Header for the HTTP-AJAX-Request, how can I do this the easiest way?

I tried the hint provided by some users to use the setRequestHeader Method to set the User-Agent, but this does not work. It does in fact work for other newly created headers (like X-Test-Header) but it does not work for User-Agent.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

要走干脆点 2024-11-10 09:42:18

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

setRequestHeader() 方法

[...]

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

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

[...]

  • 用户代理

It is simply impossible, you are not allowed to change the user-agent for XMLHttpRequests. I'm not sure if this is valid for Internet-Explorer, but the w3c specifies here:

The setRequestHeader() method

[...]

When the setRequestHeader(header, value) method is invoked, the user agent must run these steps:
[...]

Terminate these steps if header is a case-insensitive match for one of the following headers:

[...]

  • User-Agent
2024-11-10 09:42:18

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

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

If you are using jQuery, set the request header in the ajaxSetup.

$.ajaxSetup({
  beforeSend: function(request) {
    request.setRequestHeader("User-Agent","InsertUserAgentStringHere");
  }
});
故事未完 2024-11-10 09:42:18

好吧,您始终可以使用 jQuery 发布到服务器端页面,然后服务器端页面可以修改 User-Agent 标头,并向可以直接访问的页面发出请求通过 jQuery。

Well, you could always use jQuery to post to a server-side page which then in turn is able to modify the User-Agent header, and also make a request to the page which would have been directly accessed by jQuery.

不一样的天空 2024-11-10 09:42:18

实现此目的的一种方法是覆盖 window.navigator 对象的 __defineGetter__ 方法中的本机代码。

检查一下:

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

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

适用于 Chrome。我没有检查过其他浏览器。

您可以在这里阅读更多相关信息:https://www.codeproject。 com/Tips/1036762/Mocking-userAgent-with-JavaScript

A way to do this is to overwrite the native code in the __defineGetter__ method of the window.navigator object.

Check this out:

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

Run navigator.userAgent in the console before and after to check.

Works in Chrome. I haven't checked other browsers.

You can read more about it here: https://www.codeproject.com/Tips/1036762/Mocking-userAgent-with-JavaScript

蓝咒 2024-11-10 09:42:18

我是这样做的:
我将 ajax 请求发送到一个单独的 php 脚本,该脚本的作用就像转发器一样,在这个 php 脚本中,您将发出原始请求并根据需要更改用户代理。

您可以在 file_get_contents 中设置用户代理,如下所示:
https://gist.github.com/vyspiansky/82f4b1ef6fcff160047d

I have done it like this:
I send the ajax request to a seperate php script that acts just like a forwarder, in this php script you will then make the original request and change the user-agent as you want.

You can set the user-agent in file_get_contents like this:
https://gist.github.com/vyspiansky/82f4b1ef6fcff160047d

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文