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

Chrome扩展Cookie获取失败:开发Cookie管理工具遇技术问题求助

Chrome扩展无法获取HttpOnly Cookie的问题排查与修复

问题根源

  1. 参数缺失:你的content.js调用chrome.runtime.sendMessage时未传递url参数,而chrome.cookies.get必须指定Cookie所属的完整URL(含协议、域名)才能定位到目标Cookie。
  2. HttpOnly Cookie访问限制:HttpOnly Cookie禁止前端脚本(content.js)直接读取,但后台脚本(background.js)有权限读取,你的架构方向正确,但参数错误导致功能失效。

代码修正

修正content.js的调用(补充url参数)

chrome.runtime.sendMessage(
  { 
    action: "getUserCookie", 
    cookieName: "example",
    url: window.location.origin // 或使用window.location.href,需确保与Cookie域名匹配
  }, 
  function(response) {
    console.log(response);
  }
);

优化background.js(增加参数校验)

function getUserCookie(url, cookieName, callback) {
  // 新增参数校验,避免因url缺失导致无意义调用
  if (!url) {
    callback("错误:缺少必要的url参数");
    return;
  }
  chrome.cookies.get({ url: url, name: cookieName }, function(cookie) {
    if (cookie) {
      callback(cookie.value);
    } else {
      callback(false);
    }
  });
}

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if (request.action == "getUserCookie") {
    getUserCookie(request.url, request.cookieName, function(cookie) {
      sendResponse(cookie);
    });
    return true; 
  }
});

额外注意事项

  • 确认manifest.json的permissions字段已正确配置:需包含"cookies"权限,以及目标Cookie所属域名的权限(例如"https://*.example.com/*"),确保域名范围与Cookie的domain属性匹配。
  • 若Cookie的domain是顶级域(如.example.com),传递的url可以是该域名下的任意子域名(如https://www.example.com),但必须包含完整协议头(http/https)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:05:06