【发布时间】:2021-03-08 19:07:53
【问题描述】:
如何启用 CORS,以便可以从 jQuery 访问自定义 AWS API 网关?
我已经通过 API 网关公开了一个简单的 Python Lambda 函数来查找用户数据,我正在尝试使用 jQuery 访问它的端点,例如:
$.ajax({
method: 'GET',
url: 'https://slkdfjsl.execute-api.us-east-1.amazonaws.com/myapi/username?_='+new Date().getTime(),
headers: {
Authorization: authToken
},
data: {},
contentType: 'application/json',
success: function(result){
//do stuff
}
});
有时,这非常有效。有时,我会收到错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://slkdfjsl.execute-api.us-east-1.amazonaws.com/myapi/username?_=1606336278598 (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
这是什么原因造成的?
我不明白的是这种不确定性。 Answers to similar questions 已解释您可能需要添加:
async: true,
dataType: 'jsonp',
crossDomain: true,
到 ajax() 调用以启用跨域访问,但这并不能解释为什么没有它的代码大部分时间都可以工作。
我尝试添加这些选项,但在 100% 的情况下完全破坏了它,每次都给我一个“401 未授权”错误。
有没有办法在我的代码中解决这个问题,或者这可能是 AWS API Gateway 实施的一个错误?
【问题讨论】:
-
这里可能的解决方案:stackoverflow.com/a/48860809/2844703
标签: jquery ajax amazon-web-services aws-api-gateway