我们正在使用chrome webrequest API来根据请求拦截和修改标头。
在使用Chrome 72之前,我一直可以正常工作,但是现在无法正常工作了。但是,当我用function add(x: string, y: string): string;
function add(x: number, y: number): number;
function add(x: any, y: any): any {
return x + y;
}
const t1: string = add(10, 1); // Type 'number' is not assignable to type 'string'.
const t2: number = add(10, 1); // OK
const t3: string = add('10', '1'); // OK
const t4: number = add('10', 1); // Argument of type '"10"' is not assignable to parameter of type 'number'.
替换权限时,就可以了。
另外,我尝试使用另一个域Google(例如以下示例):https://developer.chrome.com/extensions/webRequest,但也无法正常工作。
您是否知道为什么该功能不再起作用?
目前,我们将使用"<all_urls>"
,但这并不是我们真正需要的巨大权限。
manifest.json:
"<all_urls>"
background.js
"permissions": [
"webRequest",
"webRequestBlocking",
"*://*.merchantos.com/*"
]
编辑:
问题已解决。对于Chrome 72,您现在需要将请求的主机添加到您的权限中,以便能够编辑标题。
manifest.json:
chrome.webRequest.onHeadersReceived.addListener(
details => ({
responseHeaders: filter(details.responseHeaders),
}),
{ urls: ['*://*.merchantos.com/*'] },
['blocking', 'responseHeaders']
)
答案 0 :(得分:0)
对于Chrome 72,您需要在权限中同时指定要拦截的目标URL和 。
例如:https://www.mywebsite.com/
向您要拦截的https://abc.merchantos.com
发出请求。因此:
您必须在manifest.json
中指定这两个URL:
{
...
"permissions": [
"webRequest",
"webRequestBlocking",
"*://*.mywebsite.com/*",
"*://*.merchantos.com/*"
],
...
}