我在Firefox(51.0.1)上遇到了导致我请求的奇怪行为 需要5秒钟才能完成。这在Chrome或Safari中不会发生。
首先背景
在我使用的Web应用程序中,用户必须登录特定服务
(假设它在foo.bar.com
上运行)。身份验证服务器响应
使用域SET-COOKIE
的{{1}}标头,以便使用每个子域
.bar.com
可以使用此身份验证令牌。
执行身份验证请求的javascript代码如下所示:
.bar.com
```
实际错误
由于跨域Cookie,我必须设置 const request = new XMLHttpRequest();
request.withCredentials = true;
request.open('POST', 'http://foo.bar.com/login');
request.setRequestHeader('Content-type', 'application/json')
request.onload = (evt) => {
doSomeStuff();
}
request.send(JSON.stringify({ username: 'foo', password: 'bar' });
,
这是(bug |特征)发生的地方:预检OPTIONS请求
5秒实现。以下POST请求正常执行。
Firefox的检查员告诉我,请求卡在request.withcredentials = true
状态
大约5秒钟(在我的测试中在4600ms和5000ms之间)。这需要
同一时间在不同的机器上。而且,这只发生在请求时
单击“登录”按钮时发出(当我重播相同的请求时)
通过“在检查器中编辑和重新发送功能”,执行请求
在18ms)。
我在MDN文档中没有找到任何相关内容 (这让我想到了一个错误)。
现在有人为什么浏览器会像这样?或者如果我正在做某事 错了?