5

我正在 chrome 的网络选项卡中查看我的 ajax 请求,我注意到我所做的每个 ajax 请求都发生了两次。

第一个是 204,然后是 200。我的 ajax 调用只被击中一次,所以我不确定为什么有 2 个。

编辑

所以它似乎与 Cors 有关,我刚刚设置为星号 (*) 进行测试。

我想我能做的事情并不多,不让它做 2 个请求,但真正让我明白的是为什么它需要这么长时间,我查看 google chrome 网络,在我的页面上,这些 204 花了 110 毫秒到 1.97 秒。

4

2 回答 2

9

这是CORS - 跨域资源共享“协议”的结果。

当向其他域发出请求时,浏览器会在您的请求之前发出请求,询问服务器是否可以继续处理该请求。

这个请求使用了方法OPTIONS,应该没有内容,只有响应头,这就是为什么响应码是204(没有内容)。确认请求被允许后,浏览器继续处理您的请求,现在将返回 200(或任何其他)状态代码。

于 2019-05-22T02:47:15.093 回答
7

当您尝试向不同的域发送 AJAX 请求时,您违反了同源策略。

您发送请求的服务器允许跨域请求。在这个过程中,应该有一个预检调用,那就是 HTTP OPTION 调用。

因此,您对 OPTION 和结果有两个响应。

于 2019-05-22T03:22:05.657 回答