0

我正在尝试用 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?

4

1 回答 1

1

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

使用常规形式不会将结果数据提供给在另一个网站上运行的 JavaScript。

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

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

我是否不得不实施 CORS?

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

JSONP 是一个做同样工作的 hack。

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


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

于 2015-02-24T17:14:32.820 回答