node.js - 当资源缺少 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 文档,但无法解决问题。
解决方案
尝试在你的服务器端包含这个
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();
});
推荐阅读
- c - vs代码在通常的黑色弹出输出屏幕中未显示结果
- node.js - 当我的代码在线时如何读取我的 .env 文件
- c - __isoc99_sscanf() 有什么作用?
- java - 我需要这个布尔值来给我最低的卡片价值并打印第一张最低的卡片。当我使用这种方法时,它给了我最后一张卡片的价值
- scala - 无法在 Spark-Scala 中执行用户定义的函数
- bash - 我可以创建一个每 30 天准确激活一次的 systemd 计时器 (Linux) 并继续计算重新启动吗?
- java - 在 Spark/Scala 中将 Lucene 索引文件写入 HDFS
- swift - 使用 Swifty 传感器和 Wahoo 的自行车动力服务扩展设置训练器阻力
- c# - S3 TransferUtility 抛出“FilePath 属性指示的文件不存在”错误
- excel-formula - Excel 2013 - 比较两个单元格