【发布时间】:2020-02-19 01:08:54
【问题描述】:
我已在控制台中为 these instructions 之后的 Lambda 函数启用了 CORS。
API 也是一个快速服务器,可为所有方法启用 CORS:
// Enable CORS for all methods
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
next()
});
但是浏览器仍然阻止请求,因为它没有收到Access-Control-Allow-Origin 标头。这是完整的消息:
home:1 从源 'http://localhost:4200' 访问 XMLHttpRequest 在 'https://szxjza7hz5.execute-api.us-east-1.amazonaws.com/loco/myendpoint' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:否 'Access-Control-Allow-Origin ' 请求的资源上存在标头。
我们如何解决这个问题?
说明中的测试方法提供如下 curl 命令:
curl -v -X OPTIONS -H "Access-Control-Request-Method: POST" -H "Origin: http://localhost:4200" https://szxjza7hz5.execute-api.us-east-1.amazonaws.com/loco
但是由于缺少身份验证令牌而失败:
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
< HTTP/2 403
< content-type: application/json
< content-length: 42
< date: Wed, 19 Feb 2020 01:45:47 GMT
< x-amzn-requestid: a529894d-19ff-4c95-915b-45c4098d30ea
< x-amzn-errortype: MissingAuthenticationTokenException
< x-amz-apigw-id: IHvz3Fp_IAMF43g=
< x-cache: Error from cloudfront
< via: 1.1 58e86c1faaee1b15c90e95d794e240dd.cloudfront.net (CloudFront)
< x-amz-cf-pop: ORD51-C3
< x-amz-cf-id: jyTAo6OUrhUWWVNOSdk6M0384K515YzE0V9Vgg-WhfXXkLDzLofr9Q==
<
* Connection #0 to host szxjza7hz5.execute-api.us-east-1.amazonaws.com left intact
{"message":"Missing Authentication Token"}
【问题讨论】:
标签: javascript amazon-web-services rest cors aws-amplify