首页 > 解决方案 > 尝试在本地文件的 Firefox Web 扩展中设置 cookie 时权限被拒绝

问题描述

我正在尝试从本地文件(使用文件协议:file:///[...])的页面上的 Web 扩展程序在 Firefox 中设置新的 cookie,但出现以下错误:

权限被拒绝设置 cookie {"domain":"","expirationDate":null,"firstPartyDomain":"","httpOnly":null,"name":"myCookie","path":null,"secure": null,"storeId":null,"url":"file:///E:/​​folder/mypage.html","value":"myvalue"}

这是我用来插入 cookie 的脚本:

var newCookie = {
        domain: '',
        name: 'myCookie',
        value: 'myValue',
        path: null,
        secure: null,
        httpOnly: null,
        expirationDate: null,
        storeId: null,
        url: 'file:///E:/folder/mypage.html',
    };

    if (cookie.hostOnly) {
        newCookie.domain = null;
    }
    browser.cookies.set(newCookie).then(function (e) {
        console.log('success!');
    }, function (e) {
        console.error(e);
    });

这些是 manifest.json 中配置的权限:

"permissions": [
    "cookies",
    "<all_urls>",
    "tabs"
],

我想我必须需要额外的许可,但我在文档中找不到与此相关的任何内容。all_urls 应该包括每个协议。

我可以使用像 document.cookie = "myCookie=myValue"; 这样的简单代码在 devTools 中手动创建 cookie。

而且我还可以通过使用像 browser.tabs.executeScript({ code: document.cookie = "${newCookie.name}=${newCookie.value}"});这样注入的内容脚本在页面中注入 cookie。

但这感觉像是一个 hack,我觉得我应该能够为此使用 browser.cookies API。

我在这里做错了什么?

标签: javascriptfirefoxcookiesfirefox-addonfirefox-addon-webextensions

解决方案


推荐阅读