请求api网关cors错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请求api网关cors错误相关的知识,希望对你有一定的参考价值。
我创建了一个AWS API GATEWAY,并按照aws doc totur步骤创建api并启用CROS和Deploy!
Enable CORS
✔创建OPTIONS方法
✔向OPTIONS方法添加200空响应模型的方法响应
✔将Mock Integration添加到OPTIONS方法
✔向OPTIONS方法添加200集成响应
✔向OPTIONS方法添加Access-Control-Allow-Headers,Access-Control-Allow-Methods,Access-Control-Allow-Origin方法响应标头
✔添加Access-Control-Allow-Headers,Access-Control-Allow-Methods,Access-Control-Allow-Origin集成响应头映射到OPTIONS方法
✔向POST方法添加Access-Control-Allow-Origin方法响应头
✔将Access-Control-Allow-Origin集成响应头映射添加到POST方法
您的资源已配置为CORS。如果您在上面的结果输出中看到任何错误,请检查错误消息,如有必要,尝试通过方法编辑器手动执行失败的步骤。
使用此API时收到错误消息:
XMLHttpRequest无法加载https://xxxxxxx.amazonaws.com/xxxx/xxxx。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,'http://localhost:7076'原产地不允许进入。响应具有HTTP状态代码400。
我应该做什么步骤?
最后我发现我的错误发生了什么!从AJAX发送到API网关的有效负载不是JSON格式,但LAMBDA的输入仅支持JSON格式的数据,这会导致LAMBDA无法正常处理输入。这反过来导致LAMBDA的运作出错。
当发生这种情况时,API GATEWAY将不会收到正常响应,因此它不会向客户端(AJAX)返回“Access-Control-Allow-Origin”,因此不存在HTTP错误的头部。
我使用JSON.stringify()函数处理了有效负载后解决了这个问题。
我最近遇到了类似的问题并假设你已经部署了你的API:
并假设您正在使用一些js客户端,如jQuery,您可能会想到一些POST / GET参数:
HTTP GET请求
$.ajax({
crossDomain : true,
contentType : 'application/json',
method : "GET",
url : YOUR_API_GATEWAY_URL,
dataType : "json"
}).done(...)
HTTP POST请求
$.ajax({
data : JSON.stringify({
param1 : val1,
param2 : val2,
...
}),
crossDomain : true,
contentType : 'application/json',
method : "POST",
url : YOUR_API_GATEWAY_URL,
dataType : "json"
}).done(...)
以上是关于请求api网关cors错误的主要内容,如果未能解决你的问题,请参考以下文章