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

CORS缺失Access-Control-Allow-Origin:为何LeetCode页面可调用API我却报错?

关于LeetCode API调用的CORS问题与Firefox扩展解决方案

先搞懂CORS的核心逻辑

你觉得困惑很正常,核心要明白:浏览器的CORS限制不是阻止跨域请求发送,而是阻止非同源的前端代码读取响应内容。

LeetCode自己的页面和API同属leetcode.com域名,属于同源,所以浏览器允许页面里的JS读取API响应;而你的代码如果是在非leetcode.com的环境(比如普通网页、未配置权限的扩展脚本)发起请求,浏览器会拦截响应,不让你的JS拿到数据——这就是你看到Access-Control-Allow-Origin缺失错误的原因。

CORS的作用是保护用户数据:假设你登录了LeetCode,浏览器保存了你的登录Cookie。如果没有CORS限制,恶意网站的JS代码可以偷偷发起LeetCode API请求(自动带上你的Cookie),然后读取响应拿到你的个人信息、做题记录等敏感数据。有了CORS,恶意网站的JS根本读不到响应内容,就算请求发出去了,也拿不到有用的数据,从而避免了数据泄露。

Firefox扩展的合法解决方法

不用依赖CORS Everywhere这类工具,Firefox扩展本身就有跨域请求的特权,只需在扩展的manifest.json里配置对应权限即可:

  1. 在manifest.json中添加LeetCode域名的权限:
{
  "manifest_version": 3, // 可根据你的扩展版本调整为v2
  "permissions": ["https://leetcode.com/*"],
  // 其他扩展配置项...
}
  1. 在扩展的背景脚本或者内容脚本中发起请求:
    • 背景脚本完全不受网页同源限制,直接用fetch就能正常获取响应;
    • 如果是内容脚本,只要扩展已经申请了https://leetcode.com/*权限,也能直接发起请求,或者通过browser.runtime.sendMessage把请求任务交给背景脚本处理,再接收返回的数据。

比如你的代码放在背景脚本里,直接运行就不会有CORS问题,和用CORS Everywhere的效果一样,但这是浏览器官方允许的合法方式。

关于“绕过”的说明

对于普通网页来说,没有合法的非服务端绕过CORS的方法——所有所谓的“绕过”要么依赖第三方工具,要么是利用浏览器漏洞,随时可能失效。但对于Firefox扩展,我们不需要“绕过”,直接用扩展的权限机制就能解决问题,这才是正确的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:02:15