Http 使用CORS从远程webclient调用AWS API网关
在AWS上,我构建了一个Lambda函数,该函数使用API网关在web上公开 对API的访问由Amazon Cognito保护 我的问题是,即使我在Cognito上成功地进行了身份验证(从而在请求头中发送了所需的令牌),我也无法从test.mydomain.com托管的客户端向该API发送请求 我在web客户端上用于将请求发送到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();
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”回复。。。谢谢