在webRequest.onBeforeRequest上添加redirectUrl后,Chrome扩展程序无法正确加载

时间:2018-08-21 19:07:31

标签: google-chrome google-chrome-extension chrome-webrequest

我正在尝试使用 chrome.webRequest API开发chrome扩展。我的扩展程序会将https://google.com重定向到https://stackoverflow.com。功能上可以正常工作,但是在chrome webRequest API中添加redirectUrl后,我的chrome扩展无法正确加载。

这是我的 manifest.json 文件:

{
    "manifest_version": 2,
    "name": "Test",
    "version": "1.0",
    "description": "Test",
    "browser_action":
    {
        "default_popup": "popup.html"
    },

    "permissions": [
        "webRequest",
        "webRequestBlocking",
        "*://*.google.com/"
    ],

    "background":{
        "scripts": ["backgroundPage.js"]
    }
}

popup.html

<!DOCTYPE html>
<html>
<head><title>Hello World!</title></head>
<body>
    <h2>Hello</h2>
    <input type="text" id="name">
</body>
</html>

backgroundPage.js

chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
        return { redirectUrl: "https://stackoverflow.com"};
    }, { urls: ["<all_urls>"] }, ["blocking"]);

如果我像下面那样更改backgroundPage.js中的redirectUrl(不重定向)

  

redirectUrl:details.url

弹出窗口正常打开。像这样

before changing redirectUrl

但是,在更改了如下所示的redirectUrl之后,

  

redirectUrl:“ https://stackoverflow.com

弹出窗口无法正常打开,但重定向工作正常。

after adding redirect

我在这里错过了什么吗?这些行为通常何时发生? 谢谢。

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题并解决了。您可以将onBeforeRequest替换为onHeadersReceived