React.js - CORS 策略:请求的资源上不存在“Access-Control-Allow-Origin”标头。 [AWS - Lambda - API 网关]
Posted
技术标签:
【中文标题】React.js - CORS 策略:请求的资源上不存在“Access-Control-Allow-Origin”标头。 [AWS - Lambda - API 网关]【英文标题】:React.js - CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. [AWS - Lambda - API GATEWAY] 【发布时间】:2021-09-09 17:39:41 【问题描述】:我有一个将表单数据发送到AWS API Gateway
的反应客户端应用程序。
当我使用 Postman
测试 API 时,一切正常,但是当我在 react 中使用 Axios
时,控制台中会显示错误:
Access to XMLHttpRequest at 'https://execute-api.eu-west-3.amazonaws.com' from origin 'http://localhost:3001' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我在 API Gateway 方法中启用了 CORS,我的 AWS Lambda function
也有 Lambda proxy integration
,但显然它没有解决问题。
我该如何解决这个问题?提前致谢。
----- 更新 -------
基于 cmets,这是我从 Lambda function
发送的响应的构建函数:
const buildResponse = (statusCode, body) =>
return
statusCode : statusCode,
headers :
"Content-Type" : "application/json",
"Access-Control-Allow-Headers" : "Content-Type",
"Access-Control-Allow-Origin": "*",
,
body : JSON.stringify(body)
我在哪里打电话:
const get = async () =>
const params =
TableName: dynamoTable
const all= await scanDynamoRecords(params, []);
const body =
data: all
return buildResponse(200, body);
【问题讨论】:
您允许哪些来源? @StefanN 我允许所有来源:"*"
太棒了!可以给我看一下代码吗?
@StefanN 问题已更新,先生,谢谢。
检查您的 API 网关是否正在转发访问控制标头?客户端根据报错信息没有收到
【参考方案1】:
尝试像这样为 axios 启用凭据:
axios.defaults.withCredentials = true;
【讨论】:
【参考方案2】:在阅读CORS
并咨询专业人士后,必须将响应标头更新为以下内容才能解决问题:
headers :
"Access-Control-Allow-Headers": "*",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "*"
当然,CORS
必须在 API 网关上为使用的每种方法启用。
【讨论】:
以上是关于React.js - CORS 策略:请求的资源上不存在“Access-Control-Allow-Origin”标头。 [AWS - Lambda - API 网关]的主要内容,如果未能解决你的问题,请参考以下文章
获取“被 CORS 策略阻止:请求的资源上不存在 'Access-Control-Allow-Origin' 标头。”使用 Axios 使用 MERN 堆栈
被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头
我的网页的一项功能已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头
来自来源的 XMLHttpRequest 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头
Angular7:已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头
Nodejs React CORS 策略:请求的资源上不存在“Access-Control-Allow-Origin”标头