我花了太长时间才弄明白这一点,也许这是另一个问题的解决方案,但这个问题与我的问题最为相似——有一个由API网关访问的lambda函数,受x-API-key保护,我可以通过提交POST请求。NET但在jquery/ajax中失败。
1) 使用发布的相同ajax脚本,删除标题结构中的beforeSend和Content-Type键名和值。
2) 按照aws程序启用CORS。确保将其应用于POST/GET函数,而不是资源:
https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html
3) 在步骤5中,Allow Access Control标头应具有X-Api-Key,只需将其更改为小写即可。
从这些步骤来看,启用CORS似乎是至关重要的,只要您使请求头keyname保持一致,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');
},
});