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

已配置CORS仍报错:GraphQL跨域请求被阻止求助

GraphQL CORS跨域问题复现

问题详情

客户端向 https://my-server.com/graphql 发起GraphQL查询时,浏览器触发CORS拦截错误:

从源 'https://my-client.com' 获取 'https://my-server.com/graphql' 的访问权限被CORS策略阻止:
对预检请求的响应未通过访问控制检查:请求的资源上不存在 'Access-Control-Allow-Origin' 标头。
若不透明响应可满足需求,请将请求模式设置为 'no-cors' 以禁用CORS获取资源。

此前曾通过在Express服务端配置CORS中间件解决该问题,但近期无明确相关代码改动的情况下,问题再次出现。本地环境(客户端localhost:3000、服务端localhost:4000)运行时无此错误。

过往有效配置

Express服务端的CORS中间件配置:

const app = express();
app.use(cors({
  origin: ['http://localhost:3000', 'https://studio.apollographql.com', "https://my-client.com"],
  credentials: true
}))

客户端实现细节

  • 使用GraphQL Code Generator生成查询钩子,示例代码:
export function useUsersQuery(baseOptions?: Apollo.QueryHookOptions<UsersQuery, UsersQueryVariables>) {
        const options = {...defaultOptions, ...baseOptions}
        return Apollo.useQuery<UsersQuery, UsersQueryVariables>(UsersDocument, options);
      }
  • 查询执行代码:const { data, loading, error } = useUsersQuery()

依赖版本信息

apollo-server-express@3.11.1
express@4.18.2
cors@2.8.5

补充说明

预检请求的响应中未包含 Access-Control-Allow-Origin 标头。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:15:34