2

In MDN Access Cotrol doc, GET Anfrage mit Anmeldeinformationen nicht Preflight. Wenn die Antwortheader Access-Control-Allow-Credentials nicht enthalten: true, ist die Antwort für den aufrufenden Client nicht verfügbar. Wenn dieses Verhalten für die Anforderung POST (Einfache POST-Anforderung mit Anmeldeinformationen - Inhaltstyp kann auch Formulardaten sein) gleich ist, besteht das Risiko, dass POST den Serverstatus ändert, obwohl die Antwort dem Client möglicherweise nicht zur Verfügung gestellt wird. Ist diese Annahme richtig?In CORS, sind POST-Anfrage mit Anmeldeinformationen vorgelagerte?

ODER POST-Anfrage mit Anmeldeinformationen vorgelagert?

Antwort

1

Preflight-Anforderungen sollen verhindern, dass der Browser bestimmte Arten von Anforderungen an einen Server sendet, es sei denn, der Server lässt dies ausdrücklich zu. Browser konnten jedoch bereits vor der Einführung der CORS-Unterstützung Anmeldeinformationen mit Anmeldeinformationen direkt an den Server senden.

Die "Security Considerations" part of the CORS spec sagt (Hervorhebung von mir):

Einfache Cross-Origin-Anfragen außerhalb dieser Spezifikation erzeugt (wie Cross-Origin-Formularen mit GET oder POST oder Cross-Origin-GET-Anfragen von Skript resultierende Elemente) enthalten in der Regel Benutzeranmeldeinformationen, sodass Ressourcen, die dieser Spezifikation entsprechen, immer darauf vorbereitet sein müssen, einfache Cross-Ursprungsanforderungen mit Anmeldeinformationen zu erwarten.

Mit anderen Worten, die Fähigkeit, credentialed POST-Anfragen ohne Preflight den Server erreichen zu müssen, ist nichts Neues: Entwickler in der Lage gewesen, um es jemals passieren, da Browser <form> s unterstützt. Daher ist es nicht von Vorteil, ein Preflight für Ajax zu benötigen, das Credential-POST-Anforderungen enthält.

Verwandte Themen