Access-Control-Allow-Origin: "*" n'est pas autorisé lorsque l'indicateur d'informations d'identification est vrai, mais il n'y a pas d'en-tête Access-Control-Allow-Credentials
Soudain, apparemment sans rien changer dans mon application web, j'ai commencé à faire de la SCRO erreurs lors de l'ouverture dans le navigateur Chrome. J'ai essayé d'ajouter un Access-Control-Allow-Origin: *
en-tête. Ensuite, j'obtiens cette erreur:
XMLHttpRequest cannot load http://localhost:9091/sockjs-node/info?t= 1449187563637. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://localhost:3010' is therefore not allowed access.
Mais comme vous pouvez le voir dans l'image ci-dessous, il n'y a pas de Access-Control-Allow-Credentials
en-tête.
WTF? Chrome bug?
Ma page est chargée à http://localhost:3010
et que le serveur utilise également Access-Control-Allow-Origin: *
sans problèmes. Est-il un problème si les deux points de terminaison de l'utiliser?
source d'informationauteur Andy | 2015-12-04
Vous devez vous connecter pour publier un commentaire.
"informations d'identification indicateur" fait référence aux
XMLHttpRequest.withCredentials
de la demande qui lui en est faite, non pas à unAccess-Control-Allow-Credentials
en-tête. Qui a été la source de ma confusion.Si la demande est
withCredentials
esttrue
Access-Control-Allow-Origin: *
ne peut pas être utilisé, même si il n'y a pas deAccess-Control-Allow-Credentials
en-tête.J'ai résolu le même problème par l'utilisation de ces étapes..
1) désactiver votre extension chrome "Allow-Control-Allow-Origin"
2) ajouter dans votre service
var xhr = new ();
xhr.withCredentials = true;
Demandes
withCredentials:true
sur un serveur configuré avecAccess-Control-Allow-Origin: *
PEUT être utilisémais vous aurez besoin de plus de config sur votre serveur:À l'aide de
Access-Control-Allow-Origin=*
sur le serveur, il ne permettra pas l'accès à toutes les ressources (qui requiert des informations d'identification) sur toute xhr de la SCRO demande.Solutions de contournement:
( et l'utilisation de
xhr.withCredentials = false
)le serveur, pour modifier l'en-tête de réponse
Access-Control-Allow-Origin=*
à la demande de l'origine. Vous pouvezaussi appliquer cette réécriture en vertu de certains critères, par exemple, si
la demande est à l'aide de certains de port ou il s'agit d'une liste de liste blanche
domaines.
Voici quelques article qui explique comment le faire sur un serveur IISmais vous pouvez le faire dans de nombreux autres serveurs:
PS: dans le cas de l'utilisation d'informations d'identification, vous aurez également besoin de l'en-tête suivant dans votre réponse du serveur:
Access-Control-Allow-Credentials=true
PS2: 1 seule valeur est autorisé à "access-control-allow-origin" paramenter. Si vous essayez d'utiliser par exemple deux domaines: domain1.com domain2.com il ne fonctionnera pas.