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

Chrome扩展发送GET请求遇CORS策略拦截问题求助

Chrome扩展调用Steam API遇CORS错误的解决办法

首先你的fetch代码有个小问题:第一个.then里没返回resp.json(),导致第二个.then拿不到数据,修正后代码如下:

let link = "https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXXXXX&steamids=764564564575656";
fetch(link)
    .then(resp => resp.json())
    .then(data => {
        console.log(data);
    })
    .catch(err => console.error(err));

核心解决办法

Chrome扩展有独立的权限体系,完全可以绕过页面的CORS限制,下面是两种靠谱方案:

1. 在manifest.json中配置主机权限

这是最直接的方法,根据你使用的Manifest版本配置即可:

  • Manifest V3:在manifest.json里添加host_permissions字段:
{
  "manifest_version": 3,
  "host_permissions": [
    "https://api.steampowered.com/*"
  ],
  // 其他扩展配置项...
}
  • Manifest V2:在permissions字段里添加对应域名:
{
  "manifest_version": 2,
  "permissions": [
    "https://api.steampowered.com/*"
  ],
  // 其他扩展配置项...
}

配置完成后,内容脚本直接发起fetch请求就不会触发CORS错误了——扩展的请求独立于页面源,不受页面CORS规则限制。

2. 用后台脚本做请求代理

如果不想在内容脚本中直接处理API请求,或者想避免暴露Steam API Key,可以把请求逻辑放到扩展的后台上下文(V3用Service Worker,V2用Background Page):

  • 步骤1:后台脚本处理请求
    以V3的service-worker.js为例:
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === "getSteamPlayerSummary") {
    fetch(`https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXXXXX&steamids=${request.steamId}`)
      .then(resp => resp.json())
      .then(data => sendResponse(data))
      .catch(err => sendResponse({error: err.message}));
    return true; // 保持消息通道开放直到异步操作完成
  }
});
  • 步骤2:内容脚本发送消息并接收数据
chrome.runtime.sendMessage(
  {action: "getSteamPlayerSummary", steamId: "764564564575656"},
  (response) => {
    if (response.error) {
      console.error(response.error);
    } else {
      console.log(response);
    }
  }
);

后台脚本的请求完全不受CORS限制,同时能更好地保护你的API Key不被页面脚本窃取。

不要使用的方案

错误提示里提到的mode: 'no-cors'不要尝试——开启后你无法解析API返回的JSON数据,只能得到一个无法读取的opaque响应,完全满足不了获取数据的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 23:22:05