How to add a value to User-Agent header in a .ajax request?
我正在尝试为Chrome创建一个插件,我从几个页面检索信息,其中一些是负载均衡器,需要一个特定的用户代理代码才能将我引导到正确的位置。
现在,我正在进行
1 2 3 4 5 | $.ajaxSetup({ beforeSend: function(request) { request.setRequestHeader("User-Agent","MyAgentCode"); } }); |
但它不起作用。
我也尝试过:
1 2 3 4 5 6 7 8 9 | $.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 }); |
哪个也不起作用。
我只想为
您可以使用headers [],这比使用beforeSend更容易。这里只需按Ctrl-F'标题'。
如果我理解正确您的问题,您可以使用webRequest Chrome API。"使用chrome.webRequest模块拦截,阻止或修改飞行中的请求,并观察和分析流量。
http://developer.chrome.com/trunk/extensions/webRequest.html
有一个示例如何删除User-Agent。而不是删除,您可以使用您的值更改requestHeader的值。
1 2 3 4 5 6 7 8 9 10 11 12 | 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: [""]}, ["blocking","requestHeaders"]); |
注意事项:
- 你必须从网络服务器打开html,而不是文件:///处理程序。
- 你必须确保你没有添加拼写错误,例如保持用户代理字符串引号打开。
-
如果您想要发出GET请求,请删除/编辑
type:"POST" 。 -
使用
BeforeSend 和使用headers 有两种方法可以编辑标题。它们都适用于$.ajax() 和$.post() 方法。
例1:
1 2 3 4 5 | $.post({ url:"http://localhost:4000", data:"we=1", headers: {"User-Agent":"user agent 1"} }); |
例2:
1 2 3 4 5 6 7 | $.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"} }); |
使用标题似乎更容易,也许只是对BeforeSend方法的一个切入点:
1 2 3 4 5 6 7 8 9 10 | $.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'); } }); |
如果你想检查结果...添加有点像:
1 2 | error: function() { alert("No data found");}, success: function() { alert("uh yead");} |
但是使用Firefox / Chrome开发工具(f12 - >网络标签)就足够了。
在zip文件中,我已经包含了PHP服务器启动命令和一个index.php文件来转储标头。
完整的工作示例文件集在此处上传:https://files.fm/u/4x3fc8ru
问候。