Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在.ajax请求中向用户代理头添加值?_Jquery_Ajax_Google Chrome Extension_User Agent - Fatal编程技术网

Jquery 如何在.ajax请求中向用户代理头添加值?

Jquery 如何在.ajax请求中向用户代理头添加值?,jquery,ajax,google-chrome-extension,user-agent,Jquery,Ajax,Google Chrome Extension,User Agent,我正在尝试为Chrome创建一个插件,从几个页面中检索信息,其中一些页面有一个负载均衡器,需要一个特定的用户代理代码将我路由到正确的位置 现在,我正在做一个.ajax()调用,我尝试了以下几项: $.ajaxSetup({ beforeSend: function(request) { request.setRequestHeader("User-Agent","MyAgentCode"); } }); 但是它不起作用 我还尝试: $.ajax({ u

我正在尝试为Chrome创建一个插件,从几个页面中检索信息,其中一些页面有一个负载均衡器,需要一个特定的用户代理代码将我路由到正确的位置

现在,我正在做一个
.ajax()
调用,我尝试了以下几项:

$.ajaxSetup({
    beforeSend: function(request) {
        request.setRequestHeader("User-Agent","MyAgentCode");
    }
});
但是它不起作用

我还尝试:

$.ajax({ 
    url: "http://blablabla.com/",
    dataType:'html', 
    beforeSend: function (req) {
        req.setRequestHeader('User-Agent', 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1 MyAgentCode);
    },
    error: function() { alert("No data found");},
    success: parseResult
});
这也不起作用


我只想向
用户代理添加一个值(保持其余部分不变)。这将允许我从正确的服务器获取正确的信息。

如果我正确理解了您的问题,您可以使用webRequest Chrome API。“使用chrome.webRequest模块拦截、阻止或修改飞行中的请求,并观察和分析流量

这里有一个如何删除用户代理的示例。您可以使用您的值更改requestHeader的值来代替删除

 chrome.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    for (var i = 0; i < details.requestHeaders.length; ++i) {
      if (details.requestHeaders[i].name === 'User-Agent') {
        details.requestHeaders.splice(i, 1);
        break;
      }
    }
    return {requestHeaders: details.requestHeaders};
  },
  {urls: ["<all_urls>"]},
  ["blocking", "requestHeaders"]);
chrome.webRequest.onBeforeSendHeaders.addListener(
功能(详情){
对于(变量i=0;i
如果我正确理解了您的问题,您可以使用webRequest Chrome API。”使用Chrome.webRequest模块拦截、阻止或修改飞行中的请求,并观察和分析流量

这里有一个如何删除用户代理的示例。您可以使用您的值更改requestHeader的值,而不是删除

 chrome.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    for (var i = 0; i < details.requestHeaders.length; ++i) {
      if (details.requestHeaders[i].name === 'User-Agent') {
        details.requestHeaders.splice(i, 1);
        break;
      }
    }
    return {requestHeaders: details.requestHeaders};
  },
  {urls: ["<all_urls>"]},
  ["blocking", "requestHeaders"]);
chrome.webRequest.onBeforeSendHeaders.addListener(
功能(详情){
对于(变量i=0;i
您可以使用标题[],这比使用beforeSend更简单。只需按住Ctrl-F键“headers”。

您可以使用headers[],这比使用beforeSend更简单。只需按Ctrl-F键“标题”。

注意事项:

  • 您必须从Web服务器打开html,而不是文件:///处理程序
  • 你必须确保你没有添加错别字,比如让用户代理字符串引号打开
  • 删除/编辑
    键入:“POST”
    ,以防您要发出GET请求

  • 有两种方法可以编辑标题,使用
    BeforeSend
    headers
    。它们都使用
    $.ajax()
    $.post()
    方法

例1:

$.post({
    url: "http://localhost:4000", 
    data: "we=1",
    headers: {"User-Agent": "user agent 1"}
    });
例2:

$.ajax({ 
    url: "http://localhost:4000",
    type: "POST",
    data: {we: "2"},
    dataType:'text', // case you wanna especify the return type
    headers: {"User-Agent": "user agent 2"}
});
使用标题似乎更容易,可能只是一个shorcut to BeforeSend方法:

$.ajax({ 
    url: "http://localhost:4000",
    type: "POST",
    data: {we: "2"},
    dataType:'text',
    headers: {"User-Agent": "user agent 1"}
    beforeSend: function (req) {
        req.setRequestHeader('User-Agent', 'user agent changed to 2');
    }
});
如果你想查看结果。。。再加上一点:

error: function() { alert("No data found");},
success: function() { alert("uh yead");}
但是使用Firefox/Chrome开发工具(f12->网络选项卡)就足够了。 在zip文件中,我包含了PHP服务器启动命令和一个index.PHP文件,用于转储头文件

上传到此处的完整工作示例文件集:

注意事项。

注意事项:

  • 您必须从Web服务器打开html,而不是文件:///处理程序
  • 你必须确保你没有添加错别字,比如让用户代理字符串引号打开
  • 删除/编辑
    键入:“POST”
    ,以防您要发出GET请求

  • 有两种方法可以编辑标题,使用
    BeforeSend
    headers
    。它们都使用
    $.ajax()
    $.post()
    方法

例1:

$.post({
    url: "http://localhost:4000", 
    data: "we=1",
    headers: {"User-Agent": "user agent 1"}
    });
例2:

$.ajax({ 
    url: "http://localhost:4000",
    type: "POST",
    data: {we: "2"},
    dataType:'text', // case you wanna especify the return type
    headers: {"User-Agent": "user agent 2"}
});
使用标题似乎更容易,可能只是一个shorcut to BeforeSend方法:

$.ajax({ 
    url: "http://localhost:4000",
    type: "POST",
    data: {we: "2"},
    dataType:'text',
    headers: {"User-Agent": "user agent 1"}
    beforeSend: function (req) {
        req.setRequestHeader('User-Agent', 'user agent changed to 2');
    }
});
如果你想查看结果。。。再加上一点:

error: function() { alert("No data found");},
success: function() { alert("uh yead");}
但是使用Firefox/Chrome开发工具(f12->网络选项卡)就足够了。 在zip文件中,我包含了PHP服务器启动命令和一个index.PHP文件,用于转储头文件

上传到此处的完整工作示例文件集:


关于。

阅读此:或此:请务必阅读
req.setRequestHeader('User-Agent','Mozilla/5.0(Windows NT 5.1)AppleWebKit/537.1(KHTML,如Gecko)Chrome/21.0.1180.83 Safari/537.1 MyAgentCode)将不起作用。您在用户代理字符串中缺少结束符
。请阅读以下内容:或阅读以下内容:确保
req.setRequestHeader('User-Agent','Mozilla/5.0(Windows NT 5.1)AppleWebKit/537.1(KHTML,如Gecko)Chrome/21.0.1180.83 Safari/537.1 MyAgentCode)将不起作用。在用户代理字符串处,您缺少结束语
。从文档中,它显示为“传统标题”,因此有人可以猜测它仅适用于尚未定义的标题,但事实上,这是有效的。从文档中,它显示为“传统标题”,因此有人可以猜测它仅适用于尚未定义的标题,但事实上,这是有效的。