Pet*_*ton 37 google-chrome google-chrome-extension
我在开发人员指南中看不到这个问题的答案,但也许我找不到合适的地方.
我想拦截使用Chrome扩展程序的HTTP请求,然后将其转发,可能使用新的/不同的HTTP标头 - 我该怎么做?
sac*_*024 41
PS:我是这个扩展的作者所以你可以责备我任何你不喜欢的东西:)
当OP提出这个问题时肯定不可能,但不久后Chrome发布了实验性的WebRequest API.但现在他们已正式加入Chrome扩展程序.您可以在Chrome中使用它修改请求和响应标头.
看看这个例子:
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']
);
Run Code Online (Sandbox Code Playgroud)
如果您想使用Chrome扩展程序,可以使用Requestly,它允许您根据需要修改请求和响应标头.看看这个快照:
对于使用清单版本 3 的扩展,您不能再使用chrome.webRequest.onBeforeSendHeaders.*. 另一种选择是chrome.declarativeNetRequest
在manifest.json中进行以下更改:
{
...
"manifest_version": 3,
"background": {
"service_worker": "background.js"
},
"host_permissions": ["<all_urls>"],
"permissions": [
"declarativeNetRequest"
],
...
}
Run Code Online (Sandbox Code Playgroud)
"<all_urls>"用于修改所有传出网址的标头。将此限制在您的工作范围内在您的background.js中进行以下更改:
// ...
const MY_CUSTOM_RULE_ID = 1
chrome.declarativeNetRequest.updateDynamicRules({
removeRuleIds: [MY_CUSTOM_RULE_ID],
addRules: [
{
id: MY_CUSTOM_RULE_ID,
priority: 1,
action: {
type: "modifyHeaders",
requestHeaders: [
{
operation: "set",
header: "my-custom-header",
value: "my custom header value"
}
]
},
condition: {
"resourceTypes": ["main_frame", "sub_frame"]
},
}
],
});
Run Code Online (Sandbox Code Playgroud)
结果
阅读文档https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/
| 归档时间: |
|
| 查看次数: |
69888 次 |
| 最近记录: |