Question

Cette question est liée au partage des ressources Cross-Origin (CORS, http: //www.w3. org / TR / CORS / ).

S'il y a une erreur lors d'un CORS demande, Chrome (et autres navigateurs afaik ainsi) enregistre une erreur dans la console d'erreur. Un exemple de message peut ressembler à ceci:

XMLHttpRequest ne peut pas charger http://domain2.example. Origine http://domain1.example n'est pas autorisé par Access-Control-Allow-Origin.

Je me demande s'il y a un moyen d'obtenir ce programme message d'erreur? J'ai essayé emballer mon retour, je l'ai aussi essayé appel xhr.send() dans try / catch, l'ajout d'un gestionnaire d'événements onerror(). Ni reçoit le message d'erreur.

Était-ce utile?

La solution

Voir:

... ainsi que des notes dans XHR Niveau 2 au sujet CORS:

Les informations sont volontairement filtrée.

Modifier plusieurs mois plus tard: Un suivi commentaire ici a demandé « pourquoi »; l'ancre dans le premier maillon manquait quelques caractères qui fait qu'il est difficile de voir quelle partie du document que je faisais référence.

Il est une chose de sécurité - une tentative d'éviter les informations exposant les en-têtes HTTP qui pourraient être sensibles. Le lien W3C à propos CORS dit:

Les agents utilisateurs doivent filtrer tous les en-têtes de réponse autres que ceux qui sont un en-tête de réponse simple, ou dont le nom du champ est une correspondance insensible à la casse ASCII pour l'une des valeurs des en-têtes de contrôle d'accès-Expose-têtes (si y en a), avant d'exposer les têtes de réponse aux API définies dans les spécifications API CORS.

Ce passage comporte des liens pour "en-tête de réponse simple", qui liste Cache-Control, Content-Language, Content-Type, Date d'expiration, de dernière modification et Pragma. Donc, ceux qui sont transmis. La partie « Accès-Control-Expose-têtes En-têtes » permet au serveur distant d'exposer d'autres têtes trop en les énumérant là-dedans. Consultez la documentation du W3C pour plus d'informations.

Rappelez-vous que vous avez une origine - disons que c'est la page Web que vous avez chargé dans votre navigateur, exécutant un peu de JavaScript - et le script fait une demande à une autre origine, qui ne sont pas habituellement autorisée parce que les logiciels malveillants peuvent faire choses que la façon dont désagréables. Ainsi, le navigateur, l'exécution du script et d'exécuter les requêtes HTTP en son nom, agit comme contrôleur d'accès.

Les regards du navigateur à la réponse de ce serveur « autres origine » et, si elle ne semble pas « prendre part » dans CORS - les en-têtes nécessaires sont manquants ou malformé - alors nous sommes dans une position de non confiance. Nous ne pouvons pas être sûr que le script en cours d'exécution est de bonne foi au niveau local, car il semble essayer de serveurs de contact qui ne sont pas ESPÉRANT être contacté de cette façon. Le navigateur ne devrait certainement pas « fuite » des informations sensibles de ce serveur à distance en passant simplement sa réponse entière au script sans filtrage - qui serait essentiellement permettant une demande croisée d'origine, de toutes sortes. Une vulnérabilité de divulgation de l'information se poserait.

Cela peut rendre difficile le débogage, mais il est une sécurité vs compromis entre la facilité d'utilisation où, depuis le « utilisateur » est un développeur dans ce contexte, la sécurité est une priorité importante.

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