You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome Manifest 3中使用cookies.set报错:无对应URL主机权限

解决Chrome扩展Manifest V3中chrome.cookies.set的URL权限错误问题

核心问题

直接用相对路径"config.html"作为chrome.cookies.set的url参数是错误的——Chrome的cookies API要求这个参数必须是带完整协议的绝对URL,扩展内页面的专属协议是chrome-extension://,后面需跟上你的扩展ID和文件路径。

正确解决方案

使用Chrome扩展提供的chrome.runtime.getURL()方法,自动生成扩展内文件的完整合法URL,无需手动拼接扩展ID。

修改后的代码

// 注意:chrome.cookies API是异步的,需用async/await或回调处理结果
async function create_cookie(obj=null) {
    var json_array = obj ? obj : [{requester: false},{title:false},{none:true}];
    const details = {
        // 生成扩展内config.html的完整URL
        url: chrome.runtime.getURL("config.html"),
        name: "Auto_Select_0519669",
        value: JSON.stringify(json_array),
        expirationDate: Number.MAX_SAFE_INTEGER
    };
    try {
        await chrome.cookies.set(details);
        console.log("Cookie创建成功");
        // 获取Cookie也要用异步方式
        const data = await chrome.cookies.get({
            url: chrome.runtime.getURL("config.html"),
            name: "Auto_Select_0519669"
        });
        console.log(data);
    } catch (err) {
        console.error("操作Cookie失败:", err);
    }
}

create_cookie();

额外说明

  1. 你的Manifest配置没问题,host_permissions里的<all_urls>已经覆盖了包括扩展自身URL在内的所有地址权限,无需额外修改。
  2. chrome.cookies的所有方法都是异步API,原代码同步调用chrome.cookies.get会直接返回undefined,必须用异步方式处理结果。

内容的提问来源于stack exchange,提问作者Wt Riker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 04:45:32