仅在Chrome中使用超慢速预检选项

最近我一直在苦苦挣扎,只是在Chrome中出现了一个非常奇怪的问题:由于我的API(NodeJS)位于不同的子域,所以我需要使用CORS从我的前端(EmberJS)到达它。

它工作得很好,但我经常(95%的时间)有很慢的OPTIONS查询,拖延任何API调用大约3秒。

2个请求,OPTIONS需要3秒钟

大部分时间都是下载一个空的内容:

下载一个空的内容需要3秒钟

当我在使用类似体系结构的另一个网站上尝试这个function时遇到了同样的问题。

我尝试了一些其他的事情:

  • 我一直在使用Firefox和Safari来尝试这个,并没有得到任何延迟。
  • 我一直试图在本地或在生产,试验相同的延迟。
  • 我一直在使用隐身模式(没有扩展名),我有完全相同的问题。

我们正在使用CORS后端的NodeJS。

现在,我不知道问题是在Chrome 60,NodeJS,CORS包还是EmberJS + jQuery。

任何人都经历过这个?

就像一个笔记: 这似乎是一个铬错误

我使用具有两个DNS名称的服务器使用唯一域中的服务来重现问题

 https://domain1.com --> https://domain1.com (No CORS, no delay) https://domain2.com --> https://domain1.com (CORS, delay) 

铬cors

这是完全相同的服务响应两个名字,所以我testing完全相同的请求,客户端和服务器代码(DNS名称是可以互换的)

经过testing

  • Chrome 61.0.3163.100(Windows) – > DELAY
  • Chrome 62.0.3202.84(Android) – > DELAY
  • Chrome 62.0.3202.84(iOS-Ipad) – >确定!
  • 火狐 – >确定
  • 边缘 – >确定

解决方法 (在我的情况)。 在我的主机中创build一个代理来响应相同的原始DNS并避免CORS