Récemment, je me débattais avec un problème très étrange qui ne se produisait que dans Chrome: mon API (NodeJS) étant située dans un sous-domaine différent, je dois utiliser CORS pour le résoudre depuis mon serveur (EmberJS).
Cela fonctionne assez bien, mais très souvent (95% du temps), les requêtes OPTIONS sont très lentes, ce qui retarde tous les appels d'API d'environ 3 secondes.
La plupart de ce temps est consacré au téléchargement d'un contenu vide:
Cela devient encore plus étrange lorsque j'essaie ceci sur un autre site Web que nous avons créé avec une architecture similaire et rencontrant exactement le même problème.
Quelques autres choses que j'ai essayées:
Nous utilisons sur le back-end NodeJS avec le package CORS .
À présent, je ne sais pas si le problème concerne Chrome 60, NodeJS, le package CORS ou EmberJS + jQuery.
Quelqu'un a vécu cela aussi?
Juste comme une note: Il semble un bug de chrome
J'ai reproduit le problème en utilisant un serveur avec deux noms DNS en utilisant un service dans un domaine unique
https://domain1.com --> https://domain1.com (No CORS, no delay)
https://domain2.com --> https://domain1.com (CORS, delay)
C'est exactement le même service qui répond à deux noms. Je teste donc exactement la même demande, code client et code serveur (les noms DNS sont interchangeables).
Testé avec
Solution de contournement (dans mon cas). Créer un proxy dans mon hôte pour répondre au même DNS d'origine et éviter CORS
J'ai trouvé la solution pour mon cas et je vais la partager ici.
Je suis sous Windows, avec la version 70 de Chrome, exécutant une interface AngularJS avec un serveur nodeJS avec restify sur le même serveur. J'utilise fiddler pour surveiller les requêtes, et la requête OPTIONS peut durer 1 seconde, parfois moins de 5 ms. Arrêtez d'utiliser Filler pour ramener ce temps maximum à 300 ms, mais cela reste long. Et ce délai se produit dans Chrome, mais pas dans Firefox. Je n'ai pas testé d'autres navigateurs.
Mon cas pourrait être différent de la question. En examinant la chronologie du réseau Chrome, lorsque Fiddler est présent, il y a un délai d'attente de 1 seconde (TTFB). Et lorsque Fiddler n'est pas activé, il existe un intervalle de 300 ms entre la recherche de l'ADN et la connexion initiale.
J'ai finalement trouvé cette AJAX requête délai étrange entre la recherche DNS et la connexion initiale sur Chrome, mais pas FF, qu'est-ce que c'est?
Il suffit de changer l'URL de connexion principale de localhost à 127.0.0.1 et cela a parfaitement résolu mon problème.