我正在尝试对具有配置的GET和OPTIONS调用响应的lamba端点进行简单调用。
$.ajax({
url: 'https://3yphvgt4dc.execute-api.us-west-2.amazonaws.com/test-cors/get-courses',
type: "GET",
headers: {
'iSCourse': 'False',
'Name': 'Ruth Anderson'
},
success: function(result) {
console.log(result);
}
});
但是每次从客户端发送此请求时,都会出现以下错误:
Access to XMLHttpRequest at 'https://3yphvgt4dc.execute-api.us-west-2.amazonaws.com/test-cors/get-courses' from origin 'http://127.0.0.1:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
现在这很有趣。据我所知,我已经正确配置了端点,您可以在客户端中看到它
这里是选项调用(如chrome网络调试器所示)
您可以在此处看到“ access-control-allow-origin:*”的设置。
但是错误仍然是由于抱怨该问题而引起的。产生的错误在此帖子的顶部附近。
因此,总的来说,我很难弄清楚为什么在这种情况下请求没有通过。有什么想法吗?
502完全是服务器问题。应该首先解决该问题,并请确保cors无法正常工作。
您收到的CORS错误不是客户端问题,而是服务器端,如您收到的错误所指示:
所请求的资源上没有'Access-Control-Allow-Origin'标头。
这是说您通过API网关请求的Lambda资源没有在其响应中返回Access-Control-Allow-Origin
标头。
要解决此问题,您需要做两件事。首先,请确保在您的API网关上启用了CORS(OPTIONS请求的响应表明已启用,但应进行验证)。
第二,在Lambda返回的响应中添加Access-Control-Allow-Origin: *
标头。您尚未指定Lambda所使用的语言,但是如果使用的是NodeJS,则返回的代码片段可能类似于:
const result = {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*',
// other required headers
},
body: object_you_are_returning
};
return result;
您可以参考AWS Docs here了解有关此错误的更多信息。在这种情况下,您的错误是缺少标题access-control-allow-origin
,因此将其(和其他任何必需的标题)添加到响应中将解决此问题。