请求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:

enter image description here

并假设您正在使用一些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错误的主要内容,如果未能解决你的问题,请参考以下文章

使用代理集成时,API 网关和 Lambda 出现 CORS 错误**仅**

从帖子正文读取时,AWS API 网关 CORS 错误

触发 API 网关端点时 COR 配置错误

AWS API 网关 CORS [关闭]

对 API 网关的 CORS 请求在浏览器中不起作用

API 网关 CORS 问题