Avec <script crossorigin= "anonymes" >, pourquoi est-ce un script “bloqué par de la SCRO politique”?
Avec Google Chrome ou Firefox, si j'essaie de charger le code HTML suivant:
<script crossorigin='anonymous' src='https://stackoverflow.com/foo.js'></script>
- Je obtenir un SCRO d'erreur comme ceci:
L'accès à l'Script " https://stackoverflow.com/foo.js 'd'origine' https://stackoverflow.com "a été bloqué par la SCRO politique: Pas de "Access-Control-Allow-Origin' en-tête est présent sur la ressource demandée...
Cependant, la même balise sans la crossorigin='anonymous'
attribut fonctionne très bien (bien sûr générer une erreur 404, depuis foo.js n'existe pas).
Cela est surprenant, car les anonymous
est juste censé empêcher l'envoi d'informations d'identification, et les balises de script ne sont pas censées exiger de la SCRO. Quelle en est la cause, et que dois-je faire?
OriginalL'auteur pdg137 | 2016-12-09
Vous devez vous connecter pour publier un commentaire.
J'ai été confus au sujet de ce pendant un certain temps. Voici comment je comprends maintenant:
Selon le W3C, il y a en fait trois valeurs possibles pour la
crossorigin
attribut:anonymous
,use-credentials
, et une "valeur manquante par défaut" qui ne peut être accessible que par l'omission de l'attribut. (Une chaîne vide, sur l'autre main, les cartes àanonymous
.) La valeur par défaut, le navigateur de sauter de la SCRO entièrement, ce qui est le comportement normal je m'attendais.La
crossorigin
attribut doit être utilisé uniquement si nous nous soucions de l'obtention des informations d'erreur pour le script en cours de chargement. Car l'accès à cette information requiert l'un de la SCRO, laAccess-Control-Allow-Origin
en-tête doit être présent sur la ressource pour qu'il soit chargé.pdg137 vous avez juste besoin de faire de votre serveur de retourner ce en-tête de réponse sur le fichier JS : Access-Control-Allow-Origin:*
Oui, qui pourrait l'aider, mais souvent je ne peux pas ou ne veux pas le faire. Plus précisément, lors du chargement de scripts tiers.
La partie sur la valeur par défaut est faux.
C'est plus clair maintenant, merci 🙂
OriginalL'auteur pdg137
crossorigin
attribut n'a que deux valeurs possibles:anonymous
ouuse-credentials
. Toute valeur autre queanonymous
, dont la valeur est vide, sera traduit enanonymous
.Donc, ces trois balises ont le même sens:
Ce qui est intéressant, cependant, c'est que la SCRO comportement est totalement désactivé si vous passez
crossorigin
attribut. Par exemple:Cette balise va exécuter le script sans la SCRO liés à la vérification. Dans la pratique, aucun
crossorigin
attribut rend navigateur sauterOrigin
en-tête HTTP entièrement.Peu importe si votre
crossorigin
estanonymous
ouuse-credentials
, demande deOrigin
doit toujours correspondre à la réponse duAccess-Control-Allow-Origin
. Sinon pas de chance - script n'est jamais déclenché.Source: HTTP de contrôle d'accès (SCRO) sur le Mozilla Developer Network
OriginalL'auteur Robo Robok