我正在尝试使用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吗?
答案 0 :(得分:1)
我知道这是一个CORS错误,可以通过实现CORS来解决,但我不明白为什么它的功能与表单不同。
使用常规表单不会将结果数据提供给在其他网站上运行的JavaScript。
同源策略保护数据(可能在用户和其他网站之间保密)。
CORS允许其他网站声明数据不需要默认的保护级别,并允许其他网站访问它。
我不得不实施CORS吗?
CORS是解决问题的标准方法。
JSONP是一个做同样工作的黑客。
代理是一种可能的解决方法。
如果您不想将响应读入JS,那么只需使用表单即可。如果您不希望结果对最终用户可见,则可以将其提交给隐藏的iframe。