在 ajax POST 到另一个域期间,OPTIONS 请求返回“No 'Access-Control-Allow-Origin' header”错误

Posted

技术标签:

【中文标题】在 ajax POST 到另一个域期间,OPTIONS 请求返回“No \'Access-Control-Allow-Origin\' header”错误【英文标题】:OPTIONS request returns "No 'Access-Control-Allow-Origin' header" error during ajax POST to a different domain在 ajax POST 到另一个域期间,OPTIONS 请求返回“No 'Access-Control-Allow-Origin' header”错误 【发布时间】:2015-08-15 22:07:43 【问题描述】:

我正在努力解决 CORS 问题。我从 js 向不同的域发出请求,该方法允许跨域请求,并且在 GETPOST 请求中都可以正常工作。看起来 OPTIONS 方法在 POST 之前调用并返回标准错误

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

return Response.ok().entity(c).header("Access-Control-Allow-Origin", "*") .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS") .header("Access-Control-Allow-Headers", "Content-Type, x-xsrf-token, X-Requested-With, Accept, Expires, Last-Modified, Cache-Control").build();

在客户端我使用 angularjs

$http.post(url, data).success(...)

但也尝试过

$.ajax(type:'POST', headers: 'Accept': 'application/json', 'Content-Type': 'application/json' ...)

同样的结果。我还能做些什么来修复 POST 请求?

【问题讨论】:

【参考方案1】:

将以下代码添加到您的 Angular JS 应用程序配置文件中

$httpProvider.defaults.useXDomain = true;

删除$httpProvider.defaults.headers.common['X-Requested-With'];

【讨论】:

以上是关于在 ajax POST 到另一个域期间,OPTIONS 请求返回“No 'Access-Control-Allow-Origin' header”错误的主要内容,如果未能解决你的问题,请参考以下文章

同一域 Ajax/PHP 上的 CORS 问题

Ajax 调用数据在 POST 期间未传递给控制器

jquery ajax nginx 跨域

如何在 Ajax(Post) 请求期间抛出自定义 http 状态码

在 Django 中的 ajax POST 期间被禁止(CSRF 令牌丢失或不正确。)

jquery ajax nginx 跨域