开发chrome extension时如何获取到请求的Host信息并增加Authorization字段
已经在manifest.json
申请了webRequest
和webRequestBlocking
两个权限
拦截请求尝试读请求头部的Host
信息代码如下
chrome.webRequest.onBeforeSendHeaders.addListener(function(details) {
var headers = details.requestHeaders;
for(var i = 0, l = headers.length; i < l; ++i) {
if( headers[i].name == 'Host' && console.log(headers[i].name) && headers[i].value == '10.201.76.233:8080' ) {
// something
break;
}
}
return {requestHeaders: headers};
}, requestFilter, ['requestHeaders','blocking']);
但是details.requestHeaders
并没有包含Host
的信息。
请教各位,如何才能获取到每次请求的Host
信息?
或是如何确定本次的请求的Host
是10.201.76.231:8080
呢
===update===
使用公子的方法解决了上面的问题了,但还存在后续问题
chrome.webRequest.onBeforeRequest.addListener(
var headers = details.requestHeaders;
headers.push({
name: 'Authorization',
value: 'Bearer3988275f-34fe-4e95-8452-506741adf184'
});
return {requestHeaders: headers};
["http://10.201.76.231:8080/*"],
['blocking', 'requestHeaders']
);
目的是增加Authorization
信息,代码并没有报错,但是最终结果并没有把Authorization
信息加上去。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
https://developer.chrome.com/extensions/webRequest ,文档中明确指出了以下头信息不会被传递进来:
如果是想要限制请求的 host 的话可以使用
onBeforeSendHeaders
的第二个参数filter
:我自己来回答问题的第一部分,关键在于
chrome.webRequest.onBeforeRequest.addListener
的回调函数中如何判别是否Host
,是否一定要和Host
比较,这里我用的是Request URL
信息,Request URL
并不是Request Header
的内容,当时两者有关联,如:Request URL
:http://10.201.76.233:8080/app-manage/api/...
Host
:10.201.76.233:8080
因此我的回调函数大概是这样子的:
如果你要为多个
host
增加Authorization
的请求头信息,那么你可以将多个host
存储起来,然后在回调函数判别,例如:问题的第二部分也解决了,虽然官方提到修改
Authorization
头部信息是不被支持的,参照这里我做的修改是在
manifest.json
加入了<all_urls>
的权限。