尽管<all_urls>清单权限

时间:2019-07-15 05:23:49

标签: javascript cors xmlhttprequest content-security-policy firefox-webextensions

我从https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions获悉发出无限制的cors请求,它应该足以拥有主机权限,因此我的清单如下所示:

"permissions": [
    "activeTab",
    "proxy",
    "<all_urls>"
],

我还尝试使用有关csp的清单密钥:

"content_security_policy": "default-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'"

但这没有帮助 但是当我尝试制作xhr时,我仍然在控制台中看到:
内容安全政策:页面的设置阻止了https://jsonplaceholder.typicode.com/posts/1(“ default-src”)处资源的加载(具有以上csp设置;使用默认csp时,我什至看不到请求的尝试)

document.addEventListener("click", (e) => {

function sendCredentials() {

    var payload = JSON.stringify({
        'login': document.login.value,
        'password': document.password.value
    });

    let xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
        if (xhr.readyState == XMLHttpRequest.DONE) {
            browser.runtime.sendMessage({
                "type": "save_token",
                "session_token": 'dummy_token'
            });
        }
    }
    xhr.open("GET", "https://jsonplaceholder.typicode.com/posts/1", true);
    xhr.send();

    if (e.target.id == 'submit') {
        sendCredentials();
    }
}

我希望在将manifest.json中的主机权限设置为我之后就可以请求任何网址

1 个答案:

答案 0 :(得分:1)

我猜想代码已插入到页面中。正确吗?

主机权限适用于从扩展程序发出的请求。将代码注入页面后,它就会获得页面的许可,并且通常会阻止CORS。

您可以将其传递回扩展程序以发出请求,然后使用消息传递API将其传递回页面。

似乎Firefox指出“我们正在阻止所有第三方存储访问请求,并且已启用内容阻止”。 Blocked: All third-party storage access requests

您可以尝试从后台脚本或页面执行此操作。例如,它在选项页上运行良好。