J'essaie de comprendre comment utiliser CORS et je ne sais pas ce que fait l'en- Access-Control-Allow-Credentials
tête.
La documentation dit
Indique si la réponse à la demande peut être exposée ou non lorsque l'indicateur d'informations d'identification est vrai.
Mais je ne comprends pas ce que signifie la réponse «exposée».
Quelqu'un peut-il expliquer ce que cet en-tête défini sur true (en conjonction avec l'indicateur d'informations d'identification défini sur true) fait réellement?
http-headers
cors
Nate
la source
la source
Réponses:
Par défaut, CORS n'inclut pas les cookies sur les demandes d'origine croisée. Ceci est différent des autres techniques d'origine croisée telles que JSON-P. JSON-P inclut toujours des cookies avec la demande, et ce comportement peut conduire à une classe de vulnérabilités appelée falsification de demande intersite , ou CSRF.
Afin de réduire le risque de vulnérabilités CSRF dans CORS, CORS exige que le serveur et le client reconnaissent qu'il est acceptable d'inclure des cookies dans les demandes. Cela fait des cookies une décision active, plutôt que quelque chose qui se passe passivement sans aucun contrôle.
Le code client doit définir la
withCredentials
propriété sur l'XMLHttpRequest
àtrue
afin de donner l' autorisation.Cependant, cet en-tête à lui seul ne suffit pas. Le serveur doit répondre avec l'en-
Access-Control-Allow-Credentials
tête. Répondre avec cet en-têtetrue
signifie que le serveur autorise les cookies (ou autres informations d'identification de l'utilisateur) à être inclus dans les demandes d'origine croisée.Vous devez également vous assurer que votre navigateur ne bloque pas les cookies tiers si vous souhaitez que les demandes d'informations d'identification croisées fonctionnent.
Notez que peu importe si vous faites des demandes de même origine ou d'origine croisée, vous devez protéger votre site de CSRF (en particulier si votre demande inclut des cookies).
la source
withCredentials
est défini, mais quand il reçoit la réponse, si withCredentials a été défini, il ne livrera / exposera le résultat au javascript appelant que si la réponse a l'accès -Control-Allow-Credentials en-tête défini. S'il n'y a pas d'en-tête, il n'expose pas la réponse, ce qui la rend effectivement noire.