HTTPOnly-Cookie wird nicht im lokalen Browser-Host festgelegt
Problem:
Anmeldung einer REST-API Der Endpunkt sendet ein HTTPOnly-Cookie mit Nutzlast (JWT), aber das Cookie wird nicht in Browsern gesetzt. Der Ansatz hatte jahrelang funktioniert, wurde aber kürzlich eingestellt. Das Problem ist auf die Localhost-Umgebung beschränkt. Postman-Tests bestätigen, dass das Cookie wie erwartet gesetzt ist.
Verwendete Ansätze:
Untersuchung:
Die Go- und Node-APIs senden beide korrekt den Set-Cookie-Header mit gesetztem HTTPOnly-Flag. Dies deutet darauf hin, dass das Problem möglicherweise im Browser oder der fetch()-Methode liegt.
Lösung:
Das Problem wurde durch Hinzufügen der Eigenschaft „credentials: „include““ behoben zur fetch()-Methode im Front-End-JavaScript. Diese Eigenschaft weist den Browser an, Cookies zu senden und zu empfangen.
Grund:
HTTPOnly-Cookies sollen verhindern, dass clientseitiges JavaScript auf den Inhalt des Cookies zugreift. Browser unterstützen dies, indem sie das Cookie standardmäßig nicht in XHR- oder fetch()-Anfragen senden. Durch das Hinzufügen der credentials: „include“-Eigenschaft wird der Browser explizit angewiesen, das Cookie zusammen mit der Anfrage zu senden, sodass es vom Server empfangen und entsprechend eingestellt werden kann.
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWarum werden meine HTTPOnly-Cookies nicht auf Localhost gesetzt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!