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

后端返回指定Access-Control-Allow-Origin,控制台报*相关CORS错误且GET无响应头

解决CORS错误:Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’

核心问题分析

  1. 错误提示与实际预检响应不符:你看到的OPTIONS预检响应头是正确的(access-control-allow-origin: https://localhost:4000),但控制台错误提示Access-Control-Allow-Origin是*,这大概率是因为实际的GET请求没有返回任何响应头——浏览器无法获取到正确的CORS头,因此触发了默认的错误提示。
  2. 手动发送OPTIONS请求无必要:你的fetch代码里指定了method: "OPTIONS",但浏览器会自动为跨域GET请求发起预检OPTIONS请求,手动发送OPTIONS不会触发后续实际GET请求,反而会干扰正常流程。
  3. 响应头格式可能不规范:你提到后端返回的access-control-allow-origin: 'https://localhost:4000'带单引号,这不符合HTTP头规范,会被浏览器识别为无效值,进而触发类似*的错误逻辑。

解决方案

1. 修复后端GET请求的响应头

确保后端处理https://exampleurl/api/user/whoIam的GET请求时,返回规范的CORS响应头:

  • 必须包含access-control-allow-origin: https://localhost:4000(不要加单/双引号)
  • 由于你的fetch设置了credentials: "omit",可以去掉access-control-allow-credentials: true(该头仅在需要携带凭证时有用)

2. 修改fetch请求代码

将请求方法改为GET,移除手动OPTIONS请求:

await fetch("https://exampleurl/api/user/whoIam", {
    "credentials": "omit",
    "headers": {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:126.0) Gecko/20100101 Firefox/126.0",
        "Accept": "*/*",
        "Accept-Language": "en-US,en;q=0.5",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "cross-site",
        "Priority": "u=4",
        "Pragma": "no-cache",
        "Cache-Control": "no-cache"
    },
    "referrer": "https://localhost:4000/",
    "method": "GET",
    "mode": "cors"
});

3. 验证响应头有效性

在开发者工具的「网络」面板中,查看GET请求的响应头:

  • 确认access-control-allow-origin存在且值为https://localhost:4000(无引号)
  • 确认请求返回200或其他合法状态码,而非无响应头的异常情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:30:15