使用 x-api-key 标头向 AWS API Gateway 发出 CORS 请求

问题描述 投票:0回答:1

尝试使用 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>
ajax amazon-web-services cors api-gateway
1个回答
0
投票

是的,问题确实出在模拟选项集成请求上。在 AWS UI 中运行测试返回 500 服务器错误。必须将 200 OK 映射模板添加到模拟集成请求中。完成后一切正常:)

{
    "statusCode": 200
}

https://cloudnamaste.com/500-internal-server-error-mock-integration/

© www.soinside.com 2019 - 2024. All rights reserved.