Api Gateway无法允许Access-Control-Allow-Origin。

12 浏览
0 Comments

Api Gateway无法允许Access-Control-Allow-Origin。

这个URL在AWS API Gateway中使用了GET方法,并成功部署在阶段上。\n我按照AWS文档启用了CORS。以下是我启用CORS的步骤:\n- 资源->操作->启用CORS->\n默认设置->启用CORS并替换CORS头部。\nCORS结果中没有错误日志。\n我不是专业的Web开发人员,我的浏览器是Safari。
\n以下是我用来查询\"http://my.com\"的代码:\n

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);}

\n控制台打印出以下错误:\nXMLHttpRequest无法加载\"http://my.com\",源http://example.com被Access-Control-Allow-Origin拒绝访问。\n请问是JavaScript请求中出现了问题,还是API Gateway部署中出现了问题?

0
0 Comments

问题原因是服务器端不允许从其他域名进行请求,因此会抛出跨域错误。尝试在AWS实例中添加了CORS,但问题仍然存在。由于JavaScript只能从my.com访问服务,需要在my.com网站中添加正确的域名映射,告诉服务器请求将来自名为example.com的另一个域名。可能是服务器配置不正确,或者服务器期望某个特定的请求头。可以尝试使用任何Rest客户端(如soapui,chrome的rest client插件等)来查看结果。确认服务器没有问题后,再从JavaScript尝试请求。可以尝试使用Chrome插件进行测试,该插件允许跨域请求:

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

0
0 Comments

经过咨询和尝试每种方法后,我发现了以下错误。

根据AWS文档,我们在部署api之前必须启用CORS。所有关于头部和CORS的设置必须在部署之前进行设置。

但是API Gateway不会阻止这个设置,也不会显示任何错误对话框。即使您的设置过程显示成功,API Gateway也不会更改标头。

这听起来像是AWS的一个错误。

问题的原因是在部署api之前没有启用CORS。

解决方法是在部署之前设置CORS和头部。以下是一种可能的解决方法:

在API Gateway中,找到您的API并选择“资源”。

选择您想要启用CORS的资源。

在资源的“操作”下拉菜单中,选择“启用CORS”。

在CORS配置页面上,设置您需要的CORS选项,如允许的域和方法。

保存设置并重新部署您的API。

这样,API Gateway将在部署期间正确设置CORS头,从而解决了Access-Control-Allow-Origin问题。

0