尝试使用 AWS 上非常简单的基于 REST 的 APIGateway 设置来获取 CORS 请求。我定义了一个基本的“hello world”lambda 函数,并在网关上的 / 资源上附加了一个 GET 方法。直接浏览器对 API 的 GET 请求工作正常,一旦我添加 API 密钥,将其附加到使用计划并将其附加到我的测试 API,一旦我将 x-api-key 标头添加到我的curl 请求中,curl GET 请求也可以工作。
但是,一旦我启用 CORS 并尝试使用 ajax/jquery 作为脚本的一部分来请求资源,它就会中断,并且我会在预检选项检查中收到 500 服务器错误,在浏览器控制台中收到实际 GET 请求的 CORS 错误:(
我使用 https://www.w3schools.com/ 启动查询,因此已将 https://www.w3schools.com 添加到 AWS 上启用 CORS 页面中的
Access-Control-Allow-Origin
字段。但尽我所能尝试它不会起作用 - 有人对我做错了什么有任何建议吗?
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$.ajax({
type: "GET",
url: "<MY APIGateway URL>",
headers: {
"x-api-key": "<MY API KEY>"
},
success: function(result){
console.log('Working!')
}
});
</script>
</head>
<body>
</body>
</html>
是的,问题确实出在模拟选项集成请求上。在 AWS UI 中运行测试返回 500 服务器错误。必须将 200 OK 映射模板添加到模拟集成请求中。完成后一切正常:)
{
"statusCode": 200
}
https://cloudnamaste.com/500-internal-server-error-mock-integration/