Ich versuche zu verstehen, wie man CORS verwendet, und bin verwirrt darüber, was der Access-Control-Allow-Credentials
Header tut.
Die Dokumentation sagt
Gibt an, ob die Antwort auf die Anforderung verfügbar gemacht werden kann, wenn das Anmeldeinformationsflag wahr ist.
Aber ich verstehe nicht, was die Antwort "ausgesetzt" bedeutet.
Kann jemand erklären, was dieser auf true gesetzte Header (in Verbindung mit dem auf true gesetzten Anmeldeinformationsflag) tatsächlich bewirkt?
http-headers
cors
Nate
quelle
quelle
Antworten:
Standardmäßig enthält CORS keine Cookies für Cross-Origin-Anfragen. Dies unterscheidet sich von anderen originensübergreifenden Techniken wie JSON-P. JSON-P enthält immer Cookies in der Anfrage. Dieses Verhalten kann zu einer Klasse von Sicherheitslücken führen, die als Cross-Site Request Forgery (CSRF) bezeichnet werden.
Um die Wahrscheinlichkeit von CSRF-Schwachstellen in CORS zu verringern, müssen sowohl der Server als auch der Client bestätigen, dass es in Ordnung ist, Cookies in Anfragen aufzunehmen. Dadurch werden Cookies zu einer aktiven Entscheidung und nicht zu einer passiven Entscheidung ohne Kontrolle.
Der Client-Code muss die
withCredentials
Eigenschaft aufXMLHttpRequest
totrue
setzen, um die Berechtigung zu erteilen.Dieser Header allein reicht jedoch nicht aus. Der Server muss mit dem
Access-Control-Allow-Credentials
Header antworten . Wenn Sie mit diesem Header auf antworten,true
bedeutet dies, dass der Server das Einfügen von Cookies (oder anderen Benutzeranmeldeinformationen) in Ursprungsanfragen zulässt.Sie müssen auch sicherstellen, dass Ihr Browser keine Cookies von Drittanbietern blockiert, wenn Sie möchten, dass Anforderungen für Cross-Origin-Anmeldeinformationen funktionieren.
Beachten Sie, dass Sie Ihre Website unabhängig davon, ob Sie Anfragen gleichen oder unterschiedlichen Ursprungs stellen, vor CSRF schützen müssen (insbesondere, wenn Ihre Anfrage Cookies enthält).
quelle
withCredentials
, wenn diese Option aktiviert ist. Wenn jedoch die Antwort empfangen wird und withCredentials festgelegt wurde, wird das Ergebnis nur dann an das aufrufende Javascript übermittelt, wenn die Antwort über den Zugriff verfügt -Control-Allow-Credentials-Header-Set. Wenn kein Header vorhanden ist, wird die Antwort nicht angezeigt, sodass sie effektiv schwarz durchlöchert wird.