Velokey
使用教程

修复 'API Key Not Found in Cookies' 报错

'api key not found in cookies' 是浏览器丢了存 key 的 cookie,不是 key 错了。这里给出 30 秒快修,以及一劳永逸的做法。

修复 'API Key Not Found in Cookies' 报错

摘要

  • API key not found in cookies 几乎不代表你的 key 错了,而是那个把 key 存进浏览器 cookie 的网页应用,读不回这个 cookie 了。
  • 最常见的元凶:第三方 cookie 被拦。Safari、Brave、Firefox 以及所有无痕窗口默认都拦它——于是存着 key 的 cookie 悄悄没能落地。
  • 快修:给这个应用的准确域名放行 cookie,退出再登录,重新粘贴 key。换了浏览器或用无痕?这就是它"消失"的原因。
  • 一劳永逸(面向开发者):别再指望 cookie。把 key 放进 Authorization: Bearer 请求头,发到一个稳定端点。没有 cookie,就没有 cookie 的毛病。

如果你是被某篇文章带过来、以为这是 "Cursor" 或 "Windsurf" 的报错——不是。这条消息来自那些把 API key 存在浏览器里的网页应用,跟你的 IDE 没关系。

"API key not found in cookies" 到底是什么意思?

意思是应用本想从浏览器 cookie 里取出你的 API key,一查,cookie 不在。你的 key 大概率没问题,出问题的是存它的地方。

机制是这样的。有些网页应用——AI 聊天前端、反向代理面板、少数 SaaS 控制台——不想把你的 key 放在它们服务器上。于是你一粘贴,它就把 key 存进你自己浏览器的 [cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Cookies)(或 cookie 支撑的会话)里。之后每次请求都从这个 cookie 把 key 读出来。一旦 cookie 丢失、被拦、过期,或作用域绑在你当前不在的域名上,读出来就是空的。你就看到了 API key not found in cookies

所以这是一个客户端鉴权状态错误,不是"凭证无效"。没人拒绝你的 key,是应用根本没找到 key 去发。

哪些应用会报这个错——以及为什么不是你 key 的问题

任何把 API key 存进 cookie 的网页应用都可能报它。这是老实话,值得说清楚:因为这个词排名第一的攻略把锅甩给了 Cursor、Windsurf、Cline 这类 IDE 工具,还配了对不上号的版本号。那些工具把 key 存在本地配置文件里,根本不是浏览器 cookie。

真正会看到 API key not found in cookies 的地方:

场景为什么 key 存在 cookie 里
AI 聊天/角色扮演前端(Chub AI/Venus 类、Janitor 类配置)你粘贴自己的 OpenAI/Claude/OpenRouter key 或反代 key,被存在浏览器侧
LLM API 的反向代理网页 UI代理把你的访问 key 存进会话 cookie,好让服务器不用持有它
带 demo/playground 的网页面板key 存进 cookie,刷新时不用重新登录就能继续用

共同点是:你的 key 从没进到一个服务器端账户里。 它就待在你浏览器里,而浏览器把它弄丢了。这一下就把下面所有修法的思路理顺了——你要修的不是 key,是 cookie 存储。

因为现代浏览器默认拦截第三方 cookie,而存你 key 的那个 cookie 常常被当成第三方。这是多数"清缓存"攻略跳过的真正根因。

看看这些默认设置,它们是在所有人脚下悄悄变的:

浏览器 / 模式第三方 cookie 默认
Safari拦截——智能防跟踪(ITP)自 Safari 13.1(2020 年 3 月)起默认开启
Firefox隔离/拦截——全面 Cookie 保护自 2022 年 6 月起默认开启
Brave开箱即拦
Chrome / Edge(无痕 / InPrivate)默认拦截
Chrome / Edge(普通窗口)放行,但广告拦截器和隐私插件常把它剥掉

于是同一个 key,"在我电脑上好好的",却在无痕窗口、锁死的公司浏览器里、或某次浏览器更新翻了隐私默认之后失灵。握手看着像成功了——应用只是之后没能写入或读回那个 cookie。

cookie 丢失还有几个原因:

  • 你清了 cookie(或点了"清除浏览数据")——存 key 的 cookie 跟着一锅端了。
  • 换了浏览器或设备——cookie 不跨浏览器同步,key 自然不在。
  • 域名或子域不对——设在 app.example.com 的 cookie,在 example.com 上看不到,反之亦然。
  • 系统时钟漂移——cookie 带过期时间戳。时钟差几分钟,浏览器就可能把一个刚写的 cookie 当成已过期。
  • 做 SSL 解密的公司代理或 VPN——有些会改写或丢掉 Set-Cookie 头,cookie 压根没落地。

现在马上怎么修 "API key not found in cookies"?

按这个顺序往下走——前两步就能解决大多数情况,一分钟内搞定:

  1. 给应用的准确域名放行 cookie。 Chrome/Edge:设置 → 隐私和安全 → 第三方 Cookie → 把应用网址加进"允许使用第三方 Cookie"。Safari:设置 → 隐私 → 取消勾选"阻止跨网站跟踪"(或加站点例外)。Firefox:地址栏盾牌图标 → 对该站点关闭增强型跟踪保护。
  2. 退出、重新登录,再重新粘贴 key。 这会逼应用重建会话、干净地写一个新 cookie。相当于给鉴权状态"关机重启"。
  3. 别用无痕/隐私模式。 这类窗口天生拦第三方 cookie,且关窗即清空。如果你是在无痕窗口存的 key,它已经没了。换普通窗口重新填 key。
  4. 对该站点关掉广告拦截器/隐私插件。 uBlock Origin、AdGuard 和隐私插件会拦掉 cookie 所在的子域。把应用加白名单,刷新,重新填 key。
  5. 检查系统时钟。 打开日期时间自动同步,让 NTP 帮你对齐。时钟漂移会悄悄让好 cookie 过期。
  6. 确认你在存 key 时的那个准确网址上。 如果 key 是在 app.tool.com 存的,cookie 不会出现在 tool.com 上。子域要对上。
  7. 在供应商后台重新生成 key。 如果队友轮换或删了它,cookie 现在指向一个死 key。新建一个,粘贴,搞定。

如果你在公司网络,上面都不管用,就用手机热点试两分钟。热点上正常,那就是做 SSL 解密的代理在吃你的 cookie——让 IT 把应用域名加进解密白名单。

怎么让这个错彻底不再出现?

别再靠一个浏览器 cookie 来携带你的 key。如果代码在你手里,就把 key 放进请求头——cookie 是可选的,请求头不是。

存在 cookie 里的 key 天生脆弱:它只活在一个浏览器配置里,继承那个浏览器的隐私规则,清一次缓存就没。基于请求头的鉴权绕开这一切,key 跟着请求走:

存在 cookie 里的 API key 与基于请求头的 API key 鉴权对比
curl https://api.velokey.ai/v1/chat/completions \
  -H "Authorization: Bearer $YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

没有 cookie,没有第三方 cookie 策略,没有无痕窗口的意外。同一段调用能从脚本、服务器、CI 任务,或你前端对接的后端里跑起来——这些地方压根不存在 cookie 问题。如果你在做浏览器应用,持久的做法是把 key 留在你自己的后端,让浏览器调用你的服务器,而不是把一个裸的供应商 key 粘进客户端 cookie。

这也是 API 网关不会中招的原因。像 [Velokey](https://api.velokey.ai) 这样的网关给你一把 key,通过一个 OpenAI 兼容端点触达众多模型——[GPT-5.6](/model/gpt-5.6)、[Claude Opus 4.8](/model/claude-opus-4-8)、[Claude Sonnet 5](/model/claude-sonnet-5)——而这把 key 每次都走 Authorization 头。没有 cookie 可丢。如果你只是为了试个模型才把供应商 key 粘进聊天前端,那直接调一个稳定端点既更简单也更不容易坏。价格那一面可以看我们的 Claude API 价格指南;想要完整走一遍,如何用 key 调用一个 API 把配置从头到尾讲清了。

快修速查

症状根因30 秒修法
只在无痕窗口失败无痕拦第三方 cookie换普通窗口,重填 key
昨天好好的,今天不行浏览器更新翻了 cookie 默认给域名放行 cookie
家里能用,公司不行SSL 解密代理剥掉 cookie用热点测;让 IT 放行域名
刚"清缓存"就坏了存 key 的 cookie 被删重新粘贴 key
cookie 设了还是找不到子域不对对上你存 key 的准确网址
时不时就过期系统时钟漂移打开日期时间自动同步
你在做自己的应用key 存在客户端 cookie 里改成后端上的请求头鉴权

常见问题

"API key not found in cookies" 是某一个应用特有的吗?

不是。它是任何把 API key 存进 cookie 的网页应用都会给出的通用消息——AI 聊天前端、反代面板、部分网页 playground 都用这套模式。把它钉死在某个 IDE 上的攻略是在猜。修法都一样:修好或换掉存 key 的那个 cookie。

不会。你的 key 存在供应商后台,不在 cookie 里。清 cookie 只删掉应用在读的那份本地副本。你会被登出、被要求重新粘贴 key,但 key 本身还在。清之前先从供应商那里复制一份,方便重填。

无痕或隐私模式会导致这个错吗?

会,而且很稳定。无痕、隐私、InPrivate 窗口默认拦第三方 cookie,关窗就全清。如果你在无痕窗口存的 key,它已经没了。换普通窗口重填 key,就能跨会话留住。

VPN 或公司代理会触发它吗?

可能。做 SSL 解密的公司代理或某些 VPN 会改写或剥掉 Set-Cookie 头,存 key 的 cookie 就没落进你浏览器。快速测法:切到手机热点一分钟。错没了,就是网络的锅——让 IT 把应用域名加进解密白名单。

这个错会影响服务器端的 API 调用吗?

不会。服务器对服务器的调用把 key 放在 Authorization 头里,全程没有浏览器 cookie,所以那里不可能出这个错。它只出现在那些选择把你 key 存在客户端的网页应用里。把鉴权挪进请求头,正是后端和脚本永远看不到它的原因。

为什么 API 网关或聚合平台没有这个问题?

因为它们用请求头鉴权,不用 cookie。你每次请求都往一个稳定端点发 Authorization: Bearer <key>,没有浏览器 cookie 可拦、可过期、可清除。这就是为什么在一个基于 cookie 的前端会悄悄失灵的场景下——跨浏览器、无痕窗口、锁死的网络——网关调用照样能用。