首页 > 解决方案 > 当资源缺少 access-control-allow-origin 标头时传递 CORS

问题描述

我已经构建了一个 react + express 应用程序,它在客户端和服务器端向外部 API(spotify API)发出请求。我的服务器和客户端在不同的端口(8888 和 3000)上提供服务。我服务器端的请求工作正常并使用标准app.use("*", cors())选项来处理 CORS,但我客户端的 axios 请求会产生 CORS 问题:

从源“http://localhost:3000”访问“externalURL”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:不存在“Access-Control-Allow-Origin”标头在请求的资源上。

我的客户端请求包括 Auth 令牌和标头:

 headers: {
        'Authorization': 'Bearer ' + authToken,
        "Content-Type": "application/json",
        "Access-Control-Allow-Origin": "*"
 }

我已经尝试阅读一些类似的帖子和 CORS 上的 MDN 文档,但无法解决问题。

标签: node.jsreactjsexpressaxioscors

解决方案


尝试在你的服务器端包含这个

app.use((req, res, next) => {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,auth-token, Authorization,');
    res.setHeader('Access-Control-Allow-Credentials', true);
    next();
});


推荐阅读