最近我一直在努力解决Chrome中出现的一个非常奇怪的问题:由于我的API(NodeJS)位于不同的子域,我需要使用CORS从我的前端(EmberJS)到达它。
它工作得很好,但我经常(95%的时间)拥有非常慢的OPTIONS查询,将任何API调用延迟大约3秒。
大部分时间花在下载空内容上:
当我在另一个使用类似架构制作的网站上尝试这个时,它会变得更奇怪,遇到完全相同的问题。
我试过的其他一些事情:
>我一直在尝试使用Firefox和Safari,并且没有任何延迟。
>我一直在本地或在制作中尝试这种方法,尝试同样的延迟。
>我一直在尝试隐身模式(没有扩展名),我有完全相同的问题。
我们正在使用CORS package的后端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)
它是响应两个名称的完全相同的服务,所以我测试完全相同的请求,客户端和服务器代码(DNS名称是可互换的)
经过测试
> Chrome 61.0.3163.100(Windows) – > DELAY
> Chrome 62.0.3202.84(Android) – > DELAY
> Chrome 62.0.3202.84(iOS-Ipad) – >好的!!!
> Firefox – >好的
>边缘 – >好
解决方法(在我的情况下)。在我的主机中创建代理以响应相同的源DNS并避免CORS