【问题标题】:Api Gateway cannot allow Access-Control-Allow-OriginApi Gateway 不能允许 Access-Control-Allow-Origin
【发布时间】:2017-04-03 08:10:51
【问题描述】:

此 url 在 AWS API Gateway 中,方法 get 和 stage 部署良好。 我在aws document之后启用了CORS。

这是我启用 CORS 的步骤。

-资源->动作->启用CORS-> 默认设置 -> 启用 CORS 并替换 CORS 标头。 CORS 结果中没有错误日志。

我不是专业的网络开发人员,我的浏览器是 safari。
这是我查询“http://my.com”的代码

 function request(idex) {
 var xmlHttp = new XMLHttpRequest();
 xmlHttp.onreadystatechange = function() { 
    if (xmlHttp.status == 200)
        callback(xmlHttp.responseText);
 }
 xmlHttp.open("GET", "http://my.com", true);  
 xmlHttp.send(null);}

控制台打印错误: XMLHttpRequest 无法加载“http://my.com” Origin http://example.com 不被 Access-Control-Allow-Origin 所允许。

如果javascript请求或API网关部署有错误?

【问题讨论】:

  • 您在 AWS 中设置 CORS 的方式肯定有问题,因为我将 example.com 设置为我本地的虚拟主机。完成后我得到:XMLHttpRequest cannot load http://my.com/. Redirect from 'http://my.com/' to 'https://my.com/' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com' is therefore not allowed access.
  • 非常感谢,我认为您的评论有助于我找到解决问题的方法。
  • 我的荣幸。祝你好运!
  • 遇到了同样的问题。用这个来解决它 - API gateway CORS lambda

标签: javascript amazon-web-services cors aws-api-gateway


【解决方案1】:

在咨询和尝试每种方法后,我发现错误如下。

根据 AWS 文档,我们不能在启用 CORS 之前部署我们的 api。必须在部署之前设置有关标头和 CORS 的所有设置。 但 API Gateway 不会阻止此设置,也不会显示任何错误对话框。即使您的设置过程显示成功,API Gateway 也不会更改标头。

【讨论】:

  • 这听起来像是 AWS 的一个错误。
【解决方案2】:

跨源问题来自服务器端而不是 javascript 端。当服务器不允许来自其他域的请求时,它会引发跨域错误。但是你说你已经在 aws 实例中添加了 CORS

由于 javascript 仅从 my.com 访问服务,因此您需要在 my.com 站点中添加适当的域映射,以告知该请求将来自另一个名为 example.com 的域。可能是服务器配置不正确。或尝试服务器是否需要任何标头。

尝试在任何其他客户端(如soapui,chrome中的rect客户端插件等)中查看结果。一旦确认服务器没有问题,请从javascript尝试

有一个chrome插件可以试试

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 2013-09-09
    • 2012-03-08
    • 2012-06-07
    • 2011-11-05
    相关资源
    最近更新 更多