CORS 问题 - POST 时的 Access-Control-Allow-Origin 错误(Jquery Ajax)

Posted

技术标签:

【中文标题】CORS 问题 - POST 时的 Access-Control-Allow-Origin 错误(Jquery Ajax)【英文标题】:CORS issue - Access-Control-Allow-Origin Error Upon POST (Jquery Ajax) 【发布时间】:2018-03-16 21:48:27 【问题描述】:

我正在使用 JQUERY 和 AJAX 向 AWS s3 API 网关发出 POST 请求。提交后,阴影会更新。但是我在控制台中收到错误。这里是ajax部分的代码,

var myJSON = JSON.stringify(obj);
$.ajax(
   type: "POST",
   url:  "<aws-url>" ,
   data: myJSON,
   crossDomain : true,
   //dataType: 'jsonp',
   headers :
            'Content-Type':'application/x-www-form-urlencoded'
            ,
   success: function(result) 
        console.log("done");
   
);

POST 工作并且阴影已更新,但我仍然在控制台收到此错误。我也知道邮递员不能与 POST 方法一起使用。 这是错误: 加载失败:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'https://s3-ap-southeast-1.amazonaws.com' 因此不允许访问。

我不明白发生了什么。请帮忙!!

【问题讨论】:

Why does my javascript get a "No 'Access-Control-Allow-Origin' header is present on the requested resource" error when Postman does not?的可能重复 实际上我已经看过那个帖子,但没有帮助。所以我自己问了这个问题。实际上,我正在发布到 S3 中的 API 网关。 Jsonp 没有工作,因为我正在发出 POST 请求。此外,正如我所说,POST 有效,但我在控制台中收到错误,显示 url。因此,我想摆脱错误。 【参考方案1】:

请在您的 API 网关中启用 CORS,如下所示。

如果您没有添加 OPTIONS,请按照以下步骤操作(如果 OPTIONS 已经存在,只需添加 CORS),

在 /services 资源下创建一个新的 OPTIONS 方法 在 OPTIONS 方法中创建并填充 Access-Control-Allow-Origin/Method/Headers。

在创建 OPTIONS 后启用如下所示的 CORS

【讨论】:

感谢您的回答,但我已经启用了 CORS。我已将 Access-Control-Allow-Origin 设置为“*”,并将 Access-Control-Allow-Headers 设置为提供给我的默认值,即 Content-Type、X-Amz-Date、Authorizaiton、X-API-key 和 X -Amz-安全令牌。我还将 Access-Control-Allow-Method 设置为 POST、GET 和 OPTIONS。还是不行。这些方法是 lambda 函数,不需要授权。但是我没有检查任何网关响应。请帮忙。 我确信您可能在更改后部署了 API,但只是想确认一下 是的。我部署了 API,然后发出了更新影子的 POST 请求。但是我认为我没有在响应标头中获得 access-control-allow-origin 。响应本身为空,这意味着 POST 成功。仍然没有解决控制台中的错误。 如果 API 网关正在触发 Lambda,您能否分享您的处理程序代码? 如果处理程序连接到 Lambda,您能否分享一下?

以上是关于CORS 问题 - POST 时的 Access-Control-Allow-Origin 错误(Jquery Ajax)的主要内容,如果未能解决你的问题,请参考以下文章

Laravel POST 请求 Cors No 'Access-Control-Allow-Origin'

使用 API 的 json POST 缺少 CORS 标头“Access-Control-Allow-Origin”

asmx web 服务 - jQuery ajax post json (500 错误) - CORS (Access-Control-Allow-Origin 设置为 *)

Nginx CORS 不适用于 POST

使用 AFNetworking 2.0 进行 POST 时的 EXC_BAD_ACCESS

POST 上的 CORS 错误,没有内容