21 votes

Safari 10.1 : XMLHttpRequest avec des paramètres de requête ne peut pas être chargé en raison de vérifications de contrôle d'accès

Lors d'une tentative de requête CORS sur Safari 10.1, sur une URL qui inclut des paramètres de requête (par exemple, https://example.com/api?v=1), Safari affiche

XMLHttpRequest ne peut pas être chargé en raison de vérifications de contrôle d'accès

Chrome/Firefox fonctionnent correctement.

Sur les requêtes à partir d'une page sans le "?v=1", Safari fonctionne également correctement.

J'ai essayé de modifier l'en-tête de réponse du serveur de

Access-Control-Allow-Origin: https://example.com

à

Access-Control-Allow-Origin: https://example.com/api?v=1

mais cela casse Chrome.

Des suggestions ?

2voto

mdeora Points 1627

Essayer ce qui suit pourrait fonctionner -

Access-Control-Allow-Origin:  | *

1voto

Seika85 Points 207

Vous rencontrez des problèmes de CORS.

Quelques causes possibles :

  • L'en-tête Access-Control-Allow-Origin ne peut être défini que côté serveur, pas dans le script de votre client. (Vous n'avez pas clairement fait savoir que vous l'aviez fait correctement.)
  • Êtes-vous sûr que le protocole (http vs https vs peut-être même file) est exactement le même?
  • Si vous avez peut-être plusieurs sous-domaines, vous devez configurer votre configuration (par exemple Apache) avec quelque chose comme "^http(s)?://(.+\.)?test\.com$ .
    Le ^ marque le début de la ligne pour empêcher toute chose précédant cette URL. Vous avez besoin d'un protocole et d'autoriser les deux ici. Un sous-domaine est facultatif. Et le $ marque la fin de la ligne (vous n'avez pas besoin de définir les sous-pages, car l'origine est basée uniquement sur l'hôte).
  • Comme indiqué ici, ajouter Access-Control-Allow-Headers: Origin à la configuration du serveur peut également être une solution. Essayez de comparer les demandes réelles faites par Safari aux demandes réussies effectuées par Firefox ou Chrome pour repérer d'éventuels en-têtes manquants (et peut-être les comparer également à votre configuration serveur).

-1voto

Christian Kaal Points 50

Si quelqu'un rencontre cette erreur, elle vient de se produire dans l'application que je construisais. Dans mon cas, il s'est avéré qu'il y avait un / en trop dans l'uri, ce qui a provoqué une réponse 301, qui a été interprétée par Safari comme une réponse 500 pour une raison quelconque.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X