【问题标题】:Xhr from extension is blocked despite the <all_urls> manifest permission尽管有 <all_urls> 清单权限,但来自扩展的 Xhr 仍被阻止
【发布时间】:2019-11-23 19:05:21
【问题描述】:

正如我从 https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions 了解到的那样,要发出不受限制的 cors 请求,拥有主机权限就足够了,所以我的清单如下所示:

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

我也尝试过使用 manifest 中关于 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 中设置主机权限后,我将能够请求任何 url

【问题讨论】:

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


    【解决方案1】:

    我猜代码被注入到一个页面中。对吗?

    主机权限适用于从扩展发出的请求。一旦你将代码注入到一个页面中,它就会从页面获得它的权限,并且 CORS 通常会被阻止。

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

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

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

    【讨论】:

    • 我认为除了 popup.html 之外,我并没有将代码注入网页: 1. 包含在我的 popup.html 中的脚本为 2. 代码来自 authorizer.js 的帖子 3. 我还在后台脚本中存储了一些数据
    • 我是否理解正确,您的意思是“将脚本注入在浏览器选项卡中打开的网页中”?
    • 是的...我的意思是来自标签的页面。
    猜你喜欢
    • 2011-09-27
    • 1970-01-01
    • 2022-01-02
    • 2011-04-01
    • 2018-07-17
    • 2017-06-01
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    相关资源
    最近更新 更多