Http 使用CORS从远程webclient调用AWS API网关

Http 使用CORS从远程webclient调用AWS API网关,http,amazon-web-services,aws-api-gateway,Http,Amazon Web Services,Aws Api Gateway,在AWS上,我构建了一个Lambda函数,该函数使用API网关在web上公开 对API的访问由Amazon Cognito保护 我的问题是,即使我在Cognito上成功地进行了身份验证(从而在请求头中发送了所需的令牌),我也无法从test.mydomain.com托管的客户端向该API发送请求 我在web客户端上用于将请求发送到API网关端点的代码: function ajaxPost(url, data, callback) { var req = new XMLHttpRequest();

在AWS上,我构建了一个Lambda函数,该函数使用API网关在web上公开

对API的访问由Amazon Cognito保护

我的问题是,即使我在Cognito上成功地进行了身份验证(从而在请求头中发送了所需的令牌),我也无法从test.mydomain.com托管的客户端向该API发送请求

我在web客户端上用于将请求发送到API网关端点的代码:

function ajaxPost(url, data, callback) {

var req = new XMLHttpRequest();
req.open("POST", url);

req.addEventListener("load", function () {
    if (req.status >= 200 && req.status < 400) {
        callback(req.responseText);
    } else {
        console.error(req.status + " " + req.statusText + " " + url);
    }
});

req.addEventListener("error", function () {
    console.error("URL " + url + " unreachable.");
});

req.setRequestHeader("Content-Type", "application/json");
req.setRequestHeader("Authorization", data.get("id-token"));

data = JSON.stringify(data);

req.send(data);
}
函数ajaxPost(url、数据、回调){ var req=新的XMLHttpRequest(); 请求打开(“POST”,url); 请求addEventListener(“加载”,函数(){ 如果(请求状态>=200&请求状态<400){ 回调(请求响应文本); }否则{ 控制台错误(req.status+“”+req.statusText+“”+url); } }); 请求addEventListener(“错误”,函数(){ 错误(“URL”+URL+“无法访问”); }); setRequestHeader(“内容类型”、“应用程序/json”); 请求setRequestHeader(“授权”,data.get(“id令牌”); data=JSON.stringify(数据); 请求发送(数据); } 我通过AWS控制台在API方法上启用了CORS,也在我的浏览器上启用了CORS进行测试,因此应该允许跨域请求

编辑

在API网关CORS配置中添加访问控制公开头之后, 我从Chrome控制台得到的错误消息是:“XMLHttpRequest无法加载。飞行前的响应具有无效的HTTP状态代码401”,我可以在选项响应头中看到“x-amzn-errortype:UnauthorizedException”

现在已经过了几天了,在看了所有API网关教程和配置之后,我仍然目瞪口呆。。。任何帮助都将不胜感激,非常感谢

解决了

显然,AWS中会有一个bug,在部署API后启用/编辑CORS将毫无用处

请参见以下回复:

我尝试从AWS控制台创建一个新的API,在流程的一开始就启用CORS,然后部署新创建的API:它成功了。

解决了

显然,AWS中会有一个bug,在部署API后启用/编辑CORS将毫无用处

请参见以下回复:


我尝试从AWS控制台创建一个新的API,在流程的一开始就启用CORS,然后部署新创建的API:它起作用了。

从curl请求的
选项是否起作用?e、 g.
curl-v-X选项https://...
我从Curl收到了同样的“401/Unauthorized”回复。。。谢谢
选项
从curl请求是否有效?e、 g.
curl-v-X选项https://...
我从Curl收到了同样的“401/Unauthorized”回复。。。谢谢