Node.js 当资源缺少访问控制时传递CORS允许源标头
我构建了一个react+express应用程序,它在客户端和服务器端向外部API(spotify API)发出请求。 我的服务器和客户端在不同的端口(8888和3000)上提供服务。 我的服务器端的请求工作正常,使用标准的Node.js 当资源缺少访问控制时传递CORS允许源标头,node.js,reactjs,express,axios,cors,Node.js,Reactjs,Express,Axios,Cors,我构建了一个react+express应用程序,它在客户端和服务器端向外部API(spotify API)发出请求。 我的服务器和客户端在不同的端口(8888和3000)上提供服务。 我的服务器端的请求工作正常,使用标准的应用程序。使用(“*”,cors())选项来处理cors,但我的客户端的axios请求会造成cors问题: 从源代码访问“externalURL”处的XMLHttpRequesthttp://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检
应用程序。使用(“*”,cors())
选项来处理cors,但我的客户端的axios请求会造成cors问题:
从源代码访问“externalURL”处的XMLHttpRequesthttp://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在'access control Allow Origin'标头
我的客户端请求包括身份验证令牌和头:
headers: {
'Authorization': 'Bearer ' + authToken,
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
}
我试着在CORS上阅读一些类似的帖子和MDN文档,但没有解决这个问题。试着在服务器端包含这个
app.use((请求、恢复、下一步)=>{
res.setHeader('Access-Control-Allow-Origin','*');
res.setHeader('Access-Control-Allow-Methods','GET,POST,PATCH,DELETE');
res.setHeader('Access-Control-Allow-Headers','X-request-With,内容类型,身份验证令牌,授权');
res.setHeader('Access-Control-Allow-Credentials',true);
next();
});不幸的是,没有运气。我试着在有cors模块和没有cors模块的情况下进行测试。我想知道是否因为react客户端位于不同的端口3000上,我服务器上的这些cors选项不适用?我认为它与端口无关。尝试发送包含和不包含标题的请求。该请求需要一个身份验证令牌和一个内容类型标题,不管怎样-否则我不认为CORS选项会引发并产生这个问题来自外部Spotify API端点的响应需要访问控制Allow Origin header-作为响应标题。但事实并非如此。而且,前端JavaScript中没有任何更改可以将响应头添加到来自外部端点的响应中。外部端点的维护者需要添加响应头。谢谢,我很喜欢在整个站点上阅读您关于这个主题的帖子。我可以像一些人建议的那样,通过代理服务器解决这个问题吗?为什么我在本地运行项目而不是在heroku上运行项目时,这不是一个问题?