我正在尝试编写一个扩展程序,用于修改Chrome上所有传出请求的User-Agent。
对于http://,https://,ftp://,file://或chrome-extension://我可以使用chrome.webRequest API和onBeforeSendHeaders
。但是,这不适用于ws://或wss://。
是否有其他API允许我在这些请求上设置/修改标头?
答案 0 :(得分:4)
我正在谷歌上搜索这个问题的答案,现在,三年之后,我可以在这里记录下来。
根据https://developer.chrome.com/extensions/webRequest,它应该可以在Chrome 58中运行。但是为了使其运行,需要几种配置。
请记住,webRequest仅在后台脚本中可用,而不在内容脚本中。
示例(更改Origin标头,更改用户代理应该类似)
在manifest.json中:
"permissions": [
"storage",
"tabs",
"activeTab",
"webRequest",
"webRequestBlocking",
"webNavigation",
"debugger",
"https://*/",
"wss://*/"
],
在后台脚本中
// origin is defined somewhere above
chrome.webRequest.onBeforeSendHeaders.addListener((details) => {
if (origin) {
const headers = details.requestHeaders;
for (let i = 0; i < headers.length; i++) {
if (headers[i].name === 'Origin') {
headers[i].value = origin;
}
}
return { requestHeaders: headers };
}
}, { urls: ['wss://server.example.com/*', 'https://server.example.com/*'],
types: ['xmlhttprequest', 'websocket'] },
['requestHeaders', 'blocking']);
答案 1 :(得分:2)
我不敢。现在请求标题可用,请参阅this answer。
这可能是一个不错的功能请求。