使用 API 网关在 Lambda 请求中继续获取 502。请求的资源上不存在 'Access-Control-Allow-Origin' header
Keep getting 502 on a Lambda request with API Gateway. No 'Access-Control-Allow-Origin' header is present on the requested resource
我用 Serverless 构建了一个 API 网关,但我用 allowCredentials: true
创建的第一条路由不起作用。
clients-confirmation:
handler: clients.onConfirmation
events:
- http:
path: clients/on-confirmation
method: post
cors:
origin: 'https://840b1a6d.ngrok.io' # <-- Specify allowed origin
headers:
- Content-Type
- X-Amz-Date
- Authorization
- X-Api-Key
- X-Amz-Security-Token
- X-Amz-User-Agent
- Access-Control-Allow-Origin
- Access-Control-Allow-Credentials
- Access-Control-Allow-Methods
- Access-Control-Allow-Headers
allowCredentials: true
cacheControl: 'max-age=600, s-maxage=600, proxy-revalidate'
authorizer: aws_iam
用户已登录,我使用AWS-AmplifyAuth.post
到post到路由。
我试图将我的本地主机放在 ngrok 上以更好地感受真实环境,但它不起作用。
我认为我的 ResponseBuilder 提供了正确的 headers。
export default class ResponseBuilder {
static create(data, withCredentials = false) {
return {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': 'https://840b1a6d.ngrok.io',
'Access-Control-Allow-Credentials': withCredentials, // true
'Access-Control-Allow-Headers': 'access-control-allow-origin, Access-Control-Allow-Headers, Access-Control-Allow-Origin, Origin,Accept, Access-Control-Allow-Credentials'
},
body: JSON.stringify(data),
'isBase64Encoded': false,
};
}
}
我在每次请求时都使用它。我尝试输入 ngrok 来源和通配符,但它一直告诉我同样的错误。
关于 lambda 的响应或我应该添加到我的无服务器文件的设置有什么我不知道的吗?
非常感谢您的帮助!
allowCredentials: true
不适用于 'Access-Control-Allow-Origin': '*'
。
您必须明确指定来源:
'Access-Control-Allow-Origin': 'https://840b1a6d.ngrok.io'
还有 withCredentials
在 'Access-Control-Allow-Credentials': withCredentials
应该是 true
我用 Serverless 构建了一个 API 网关,但我用 allowCredentials: true
创建的第一条路由不起作用。
clients-confirmation:
handler: clients.onConfirmation
events:
- http:
path: clients/on-confirmation
method: post
cors:
origin: 'https://840b1a6d.ngrok.io' # <-- Specify allowed origin
headers:
- Content-Type
- X-Amz-Date
- Authorization
- X-Api-Key
- X-Amz-Security-Token
- X-Amz-User-Agent
- Access-Control-Allow-Origin
- Access-Control-Allow-Credentials
- Access-Control-Allow-Methods
- Access-Control-Allow-Headers
allowCredentials: true
cacheControl: 'max-age=600, s-maxage=600, proxy-revalidate'
authorizer: aws_iam
用户已登录,我使用AWS-AmplifyAuth.post
到post到路由。
我试图将我的本地主机放在 ngrok 上以更好地感受真实环境,但它不起作用。
我认为我的 ResponseBuilder 提供了正确的 headers。
export default class ResponseBuilder {
static create(data, withCredentials = false) {
return {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': 'https://840b1a6d.ngrok.io',
'Access-Control-Allow-Credentials': withCredentials, // true
'Access-Control-Allow-Headers': 'access-control-allow-origin, Access-Control-Allow-Headers, Access-Control-Allow-Origin, Origin,Accept, Access-Control-Allow-Credentials'
},
body: JSON.stringify(data),
'isBase64Encoded': false,
};
}
}
我在每次请求时都使用它。我尝试输入 ngrok 来源和通配符,但它一直告诉我同样的错误。
关于 lambda 的响应或我应该添加到我的无服务器文件的设置有什么我不知道的吗?
非常感谢您的帮助!
allowCredentials: true
不适用于 'Access-Control-Allow-Origin': '*'
。
您必须明确指定来源:
'Access-Control-Allow-Origin': 'https://840b1a6d.ngrok.io'
还有 withCredentials
在 'Access-Control-Allow-Credentials': withCredentials
应该是 true