Jquery 如何在.ajax请求中向用户代理头添加值?
我正在尝试为Chrome创建一个插件,从几个页面中检索信息,其中一些页面有一个负载均衡器,需要一个特定的用户代理代码将我路由到正确的位置 现在,我正在做一个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
.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)代码>将不起作用。在用户代理字符串处,您缺少结束语”
。从文档中,它显示为“传统标题”,因此有人可以猜测它仅适用于尚未定义的标题,但事实上,这是有效的。从文档中,它显示为“传统标题”,因此有人可以猜测它仅适用于尚未定义的标题,但事实上,这是有效的。