请求api网关cors错误

问题描述 投票:0回答:2

我创建了一个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。

我应该做什么步骤?

amazon-web-services cors
2个回答
1
投票

最后我发现我的错误发生了什么!从AJAX发送到API网关的有效负载不是JSON格式,但LAMBDA的输入仅支持JSON格式的数据,这会导致LAMBDA无法正常处理输入。这反过来导致LAMBDA的运作出错。

当发生这种情况时,API GATEWAY将不会收到正常响应,因此它不会向客户端(AJAX)返回“Access-Control-Allow-Origin”,因此不存在HTTP错误的头部。

我使用JSON.stringify()函数处理了有效负载后解决了这个问题。


0
投票

我最近遇到了类似的问题并假设你已经部署了你的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(...) 
© www.soinside.com 2019 - 2024. All rights reserved.