Question

Je suis intéressé à voir quel code JavaScript Cross-Browser minimal (jQuery est bien aussi) pourrait être possible pour vérifier si un site que je souhaite envoyer des demandes AJAX à domaine transversal présente une prise en charge de CORS.

Je sais que jQuery a une méthode pour vérifier si le navigateur le prend en charge. Mais j'aimerais vraiment pouvoir vérifier si le site éloigné le prend également en charge.

Je pensais que je devais juste vérifier un en-tête HTTP, mais bien sûr, le XHR lancera une exception lorsque vous essayez de faire une demande de domaine transversal à un site qui ne le soutienne pas spécifiquement.

Mais y a-t-il un moyen de vérifier qu'une exception lancée par XMLHttpRequest était dû au fait que le site ne soutient pas CORS Plutôt que quelque chose d'autre ne va pas? (Il n'a pas à soutenir XDomainRequest.)

Dans tous les cas, je ne suis pas sûr du meilleur moyen de croisement minimal / le plus rapide pour aller chercher un HTTP HEAD en utilisant Ajax, ce que je suppose est la manière légère plutôt que de récupérer une page, etc.

Cas d'utilisation: une fois que je sais si le navigateur et le fournisseur AJAX soutiennent CORS ou non, je peux choisir d'envoyer les fonctionnalités JSON/CORS demandes ou retomber à JSONP Demandes lorsque cela est nécessaire.

Était-ce utile?

La solution

Jusqu'au spécification, ce n'est pas possible.

S'il y a une erreur de réseau: dans le cas des erreurs DNS, une défaillance de la négociation TLS ou d'autres types d'erreurs de réseau, appliquez les étapes d'erreur de réseau. Ne demandez aucun type d'interaction utilisateur final ...

Sinon: effectuez une vérification de partage des ressources. S'il renvoie l'échec, appliquez les étapes d'erreur du réseau ...

Il n'y a aucun moyen spécial d'identifier le cas dans lequel CORS n'est pas autorisé, car le Étapes d'erreur de réseau sont appliqués dans tous les cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top