Ajax请求303响应CORS问题

时间:2015-02-24 17:06:52

标签: jquery ajax cors http-status-code-303

我正在尝试使用jquery模仿表单请求。表单登录到服务器,该服务器返回303响应并将用户重定向到主页面。

使用表单时这很好用。但是,当尝试使用ajax调用时,我收到以下错误:

XMLHttpRequest cannot load [redirect url]. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin [origin-url] is therefore not allowed access.

我知道这是一个CORS错误,可以通过实现CORS来解决,但我不明白为什么它的功能与表单不同。

我的ajax电话:

jQuery.ajax({
            url: "[same url as the form]",
            type: "post",
            data: formData
            });

我所做的谷歌搜索只返回试图阻止303重定向的结果,所以似乎正常的反应是在重定向之后。

我错过了什么?我不得不实施CORS吗?

1 个答案:

答案 0 :(得分:1)

  

我知道这是一个CORS错误,可以通过实现CORS来解决,但我不明白为什么它的功能与表单不同。

使用常规表单不会将结果数据提供给在其他网站上运行的JavaScript。

同源策略保护数据(可能在用户和其他网站之间保密)。

CORS允许其他网站声明数据不需要默认的保护级别,并允许其他网站访问它。

  

我不得不实施CORS吗?

CORS是解决问题的标准方法。

JSONP是一个做同样工作的黑客。

代理是一种可能的解决方法。


如果您不想将响应读入JS,那么只需使用表单即可。如果您不希望结果对最终用户可见,则可以将其提交给隐藏的iframe。