如何使用 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');
},
});
我需要 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');
},
});