如何使用 Jquery AJAX POST API 键 API 网关作为请求 header

How to POST API key to API gateway as a request header using Jquery AJAX

我需要 post json 数据到受 API 密钥保护的 AWS API 网关。当我尝试在 Postman 中添加 x-api-key header 并发出请求时,POST 起作用了。但是,我想用 Jquery 代码做同样的事情。如何在 JQuery 中添加此 x-api-key header。这是我的代码,

var myJSON = JSON.stringify(obj);

    $.ajax({
       type: "POST",
       url:  "<aws-url>" ,
       data: myJSON,
       crossDomain : true,
       dataType: 'json',
       beforeSend: function(xhr){xhr.setRequestHeader("X-Api-Key","<value>");},
       headers :{
                'Content-Type':'application/x-www-form-urlencoded',
                //'Authorization':'<value>'
                },
       success: function(result) {
            console.log("ho gaya");
       }
    });

如您所见,我尝试在 header 中添加 "Authorization"、"auth-key"、"AUTH-KEY"、"X-Api-Key"、"x-api-key"部分。我还在 beforeSend 部分添加了 header ,但再次不起作用。请帮忙。

我花了太长时间才弄明白这个问题,也许这是对另一个问题的解决方案,但这个问题与我的问题最相似 - 有一个 lambda 函数由 API 网关访问,受保护x-api-key,我可以通过 .NET 提交 POST 请求,但在 jquery/ajax.

中失败

1) 使用相同的 ajax 脚本发布,删除 header 构造中的 beforeSend 和 Content-Type 键名和值。

2) 按照 aws 程序启用 CORS。确保将此应用到 POST/GET 函数而不是 RESOURCE:
https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

3)在第5步中,Allow-Access-Control-Headers应该有X-Api-Key,直接改成小写即可

从这些步骤看来,启用 CORS 似乎很重要,只要您使请求 header 键名一致,x-api-key 的小写就没那么重要了。最后,整个过程应该在您已经创建使用计划并在 API 网关控制台中输入 API 之后进行。

$.ajax({
    type: "POST",
    url: <url>,
    data: <myJSON>,
    crossDomain: true,
    dataType: 'json',
    headers: {"x-api-key": <keyvalue>},
    success: function(response) {
      $('#output').html('Success');
    },
    error: function(response) {
      $('#output').html('Failure');
    },
});