![](/img/trans.png)
[英]No 'Access-Control-Allow-Origin' header is present on the requested resource (AWS, API Gateway, S3, CORS)
[英]XMLHttpRequest - AWS API Gateway No 'Access-Control-Allow-Origin' header is present on the requested resource
当我尝试通过浏览器打开请求时,出现以下错误:
XMLHttpRequest无法加载https://............us-east-1.amazonaws.com/v1/...../select 。 所请求的资源上没有“ Access-Control-Allow-Origin”标头。 因此,不允许访问源“ http:// localhost ”。 响应的HTTP状态码为401。
我知道这可能是CORS错误,但我没有设法解决问题。
我正在使用AWS API Gateway,并且已经在API上启用了CORS,在S3上启用了CORS,所有权限都可以。
xmlHttp.open( "GET", "https://.......execute-api.us-east-1.amazonaws.com/v1/....../select", true);
xmlHttp.send();
我已经检查了API GET方法和OPTIONS方法,一切正常。
附加信息:
当我使用API而不在方法请求上定义“授权”时,一切正常,但是当我放置授权者时,我得到了上面的错误。
另一个问题:
我是否也需要在Lambda函数上允许CORS?
非常感谢所有帮助
该问题是API网关的已知错误。 当您对API进行授权时,如果身份验证失败(例如,访问被拒绝),则CORS标头不会应用于响应。 如果授权成功,则标题将应用于响应。
我们希望尽快解决此问题,但是很遗憾,我无法提供ETA。
这是因为您可能会得到缓存的结果。
在API网关> API>授权者中,尝试将自定义授权者的结果TTL(以秒为单位)更改为0 ,默认情况下为300秒。
在自动生成的策略中,该策略被缓存,因此当第二个请求到达时,它与缓存的策略不匹配并返回错误。
缓存是使用令牌,授权者,环境,您的API和部署创建的
如果将TTL设置为0,则它将不会进行缓存,并且可以测试API
您需要重新部署API以反映此更改
这是我尝试过的一种解决方案,另一种是更改自定义生成的策略,并在资源方面更加具体。 您可以将每个特定的API提供为资源数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.