在 Chrome 扩展程序中为 HTTP 请求设置用户代理
Set user agent for HTTP request in Chrome extension
我正在用纯JavaScript编写一个Chrome扩展程序,并希望将HTTP请求的用户代理更改为给定的URL,因为该URL的所有者已请求使用某种格式的用户代理。
以下代码一直有效,直到添加用户代理修改行,此时 Chrome 检查器控制台会给出错误Refused to set unsafe header "User-Agent"
。
var xhr = new XMLHttpRequest();
xhr.open("GET", serviceURL, true, username, password);
xhr.setRequestHeader('User-Agent', 'MyExtensionName/0.0.1');
xhr.onreadystatechange = function() {
// do some stuff
}
xhr.send(null);
为什么无法以这种方式修改用户代理?
您不能在此类请求中设置该标题,浏览器将阻止它 - 以及许多其他标头类型。
但是,在Chrome扩展程序中,您可以使用chrome.webRequest来更改标头。
这将调整用户代理。按照匹配模式指南更改为所需的网址。请记住将 webRequest 和 webRequestBlock 的权限添加到清单中。
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
for(var i=0; i < details.requestHeaders.length; ++i){
if(details.requestHeaders[i].name === "User-Agent"){
details.requestHeaders[i].value = "Desired User Agent Here";
break;
}
}
return {requestHeaders: details.requestHeaders};
}, {urls: ["<all_urls>"]}, ["blocking", "requestHeaders"]);
相关文章:
- Meteor如何接收HTTP请求
- 在我的情况下,如何进行http请求
- 使用插件收听Firefox标签的http请求
- http请求使用html而不是json进行响应
- 在node-js路由中发出http请求
- 是否可以在没有HTTP请求或<输入>
- Acync JS HTTP请求通知请求
- PhantomJs在控制台中发出http请求时不会返回任何状态
- PHP处理来自一个页面的http请求,并将其显示在另一个页面上
- Firefox插件-如何发出http请求
- 验收测试主要针对传出的http请求
- 验证HTTP请求来自NFC标签上的点击
- 如何制作'http请求'在Node js中同步
- 为什么我在Cloud9中的http请求总是返回错误
- AngularJS Typeahead和$http请求限制
- HTTP请求使用cURL,但在浏览器中使用javascript时会得到CORS响应
- 如何使用Chrome扩展API获取网页的所有HTTP请求
- 将http请求中的数据传递给C#控制器
- 在初始化路由之前发送$http请求
- 从客户端捕获 HTTP 请求(包括 ajax)