我正在维护一个内部Angular Web应用程序,而负责它的员工却离开了。我的背景是更多的PHP /后端。他离开后,我们的用户立即抱怨我们的网络应用程序中没有任何内容“保存”。经过仔细检查(在Chrome开发者工具网络标签中),我看到我们的网络应用会发出无限期拖延的HTTP OPTIONS
预检请求。
这就是奇怪的地方:我可以看到点击保存按钮后,我们的Apache访问日志中的OPTIONS
请求会立即显示。我确认我们的后端在不到一秒的时间内返回一个204响应代码,没有正文(通过将OPTIONS
请求复制为cURL并从命令行发出请求)。在我们的开发环境中,一切都是普通的HTTP,因此不涉及证书或代理。
现在这里是真正烤面条的部分。在我做两件事之一之前,Chrome仍处于紧张状态:
当我执行上述任一操作时,Chrome似乎从其昏迷中“醒来”,立即处理OPTIONS
响应(它在几分钟之前得到),然后立即跟进{{1}更新资源。疯了吧?很难说这是Chrome中的错误,还是在我们的应用程序(或Angular)的某些内容中导致JavaScript在处理PUT
响应之前等待某些外部事件(由窗口调整大小触发)
据我所知,我已经在Mac OS X Yosemite上运行了最新版本的Chrome(43.0.2357.81(64位))。我们的网络应用程序使用AngularJS v1.2.28,但我也确认了v1.3.15的错误。不幸的是我的Angular-foo很弱,所以我还没有能够创建一个小的Angular测试用例。我只是希望这个奇怪的场景能为那些可以指引我正确方向的人敲响钟声。感谢。