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

如何用JavaScript跨所有域名删除Cookie?或按指定域名读取Cookie

跨域删除Cookie及指定域名读取Cookie方案

为什么你的删除代码无效

浏览器的Cookie安全规则明确禁止使用通配符*作为domain属性值,这是为了防止恶意站点越权操作其他域名的Cookie。所以你之前的代码document.cookie = 'cookieName=; path=/; domain=*;expires=' + new Date(0).toUTCString();必然无法生效。


针对两个域名删除Cookie的可行方案

要删除www.abc.com和.www.abc.com下的同名Cookie,必须分别针对每个域名执行删除操作,且操作必须在对应域名的页面环境中进行(浏览器同源策略限制跨域直接操作Cookie):

  1. 删除www.abc.com下的Cookie:
document.cookie = 'cookieName=; path=/; domain=www.abc.com; expires=' + new Date(0).toUTCString();
  1. 删除.www.abc.com下的Cookie:
document.cookie = 'cookieName=; path=/; domain=.www.abc.com; expires=' + new Date(0).toUTCString();

注意:如果.www.abc.com是笔误(通常父域设置为.abc.com可覆盖所有子域),只需将上述代码中的domain改为.abc.com即可批量删除所有子域下的对应Cookie。


指定域名读取Cookie的逻辑

浏览器不允许直接跨域读取Cookie,需根据场景选择对应方案:

1. 同域名/合法子域下读取

在目标域名的页面中,可通过以下函数读取指定名称的Cookie:

function getCookie(cookieName) {
  const cookieStr = document.cookie;
  const cookies = cookieStr.split('; ');
  for (let cookie of cookies) {
    const [name, value] = cookie.split('=');
    if (name === cookieName) {
      return decodeURIComponent(value);
    }
  }
  return null;
}

// 使用示例
const myCookie = getCookie('cookieName');

2. 跨域名读取(需跨域通信)

如果需要在A域名下读取B域名的Cookie,只能通过间接方式实现:

  • iframe + postMessage:在A域名页面嵌入B域名的iframe,iframe读取自身域名的Cookie后,通过postMessage将数据发送回A页面。
  • 后端代理:由后端服务访问目标域名的接口(后端不受前端同源策略限制),读取对应Cookie后返回给前端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:50:18