Wie behebt man „Dieses gesetzte Cookie wurde aufgrund von Benutzereinstellungen blockiert“ in Chrome? (Stackoverflow-SSO-Anmeldung/Ajax-CORS-Anfrage)
Lesezeit: 4 Minuten
Benutzerbild
Es scheint, dass das kürzliche Update von Chrome auf Version 83.0.4103.116 eine Änderung in der Cookie-Behandlung gebracht hat.
Ich stelle meinen Benutzern ein Single-Sign-On zur Verfügung, das sie bei mehreren Websites anmeldet. Ähnlich wie bei Stackoverflow mache ich eine AJAX-Anfrage mit Jquery:
// needed for cross-domain request
header('Access-Control-Allow-Origin: https://www.example.com');
header('Access-Control-Allow-Credentials: true');
Allerdings funktioniert es jetzt nicht mehr.
In der Dev-Konsole habe ich eine neue Warnung mit dem Tooltip gefunden:
“Dieses Set-Cookie wurde aufgrund von Benutzereinstellungen blockiert”
Wie kann man das beheben?
Aktualisieren:
Ich sehe gerade, dass das Single-Sign-On von Stackoverflow auch nicht mehr funktioniert!
PS: Eine verwandte Frage schlägt vor, Ihren Benutzern zu sagen, dass sie die Chrome-Einstellungen ändern sollen. Aus meiner Sicht möchte ich dies vermeiden. Stellen Sie sich vor, SO würde Millionen von Benutzern informieren, um die Cookies für eine einmalige Anmeldung zu aktivieren …
@Jay Blanchard: Ich habe ausdrücklich gesagt, dass es nicht darum geht, die Chrome-Einstellungen zu ändern (was eine akzeptierte Antwort in der anderen Frage ist). Und es befasst sich nicht mit Single-Sign-On, Ajax und PHP. – Bitte seien Sie so nett und entfernen Sie das Schließen-Flag.
– Benutzerbild
25. Juni 2020 um 14:54 Uhr
Haben Sie alle Duplikate recherchiert und festgestellt, dass keines zu Ihnen gehört?
– Jay Blanchard
25. Juni 2020 um 14:57 Uhr
Na sicher. ZB stackoverflow.com/… oder google google.com/… … Und noch einmal, nur um auf die Bedeutung hinzuweisen, alle SO/Stackexchange-Benutzer werden betroffen sein.
– Benutzerbild
25. Juni 2020 um 15:00 Uhr
Scheint, dass die Standardeinstellungen für die Neuinstallation in Chrome Cookies von Drittanbietern (alle) blockieren sollen. Dies kann ein Anstieg der SameSite-Anforderungen in einem späteren Versionsupdate sein. Ich denke, dies dient dem Schutz der Benutzer vor sich selbst, was ein kleines Problem darstellt, wenn Chrome entscheidet, dass eines Ihrer eigenen Cookies ein Cookie eines Drittanbieters ist (Cookie, das von einer Domäne gesetzt wird, die nicht die aktuelle Domäne ist).
– Unglaublicher Hut
25. Juni 2020 um 15:13 Uhr
@FunkFortyNiner Nein, wir brauchen eine technische Lösung. In den nächsten Tagen werden viele Websites/Entwickler auf dasselbe Problem stoßen.
Die Website, die die passiert set-cookie Der HTTP-Header muss auch die übergeben SameSite wie None und auch Securesonst wird das Cookie nicht gespeichert und ignoriert.
Trotzdem gibt es etwas, das mein Browser nicht mag. Das Cookie kommt wie folgt: Set-Cookie: JSESSIONID=somevaluehere; path=/my-site-path;SameSite=None;Sicher, aber der Browser sagt immer noch, dass er es nicht setzen will. Hinweis: Die re/rsp befindet sich innerhalb eines Iframes.
– Viktor
16. Oktober 2020 um 12:51 Uhr
Ich habe es behoben: Das Problem war, dass ich in Chrome im Inkognito-Modus getestet habe. Außerdem gab es eine Standardeinstellung in Chrome, die angab, dass der Inkognito-Modus keine Cookies von Drittanbietern akzeptieren sollte. Also, ich habe die Option aktiviert und die Cookies werden jetzt gespeichert.
– Viktor
16. Oktober 2020 um 14:26 Uhr
für PHP 5.6.40 Wenn Sie kein Problem haben, die PHP-Binärdatei neu zu erstellen, habe ich es geschafft, dieses Feature von PHP 7.3 auf PHP 5.6.40 zu portieren, und es gibt jetzt einen Pull-Request. Die vollständige Antwort finden Sie hier: stackoverflow.com/a/64960472/1641763
– Nadir
22. November 2020 um 23:28 Uhr
Wählen Sie die erste Option unter „Cookies und andere Websitedaten“ in den Chrome-Einstellungen, die „Alle Cookies zulassen“ lautet. Bei mir hat es funktioniert.
Die obigen Problemumgehungen funktionieren nicht (die Funktion setcookieSameSite), da Sie das Samesite-Flag auf der Sitzungskennung setzen müssen (ich kann sehen, dass die PHPSESSID auch diese Nachricht enthält, dh “Dieses Set-Cookie wurde aufgrund von Benutzereinstellungen blockiert”). Oder vielleicht indem Sie den Pfad session_set_cookie_params ausprobieren? (ungetestet).
In eigentümlich für PHP 5.6-Zweigmüssen Sie das Cookie-Attribut der Sitzung festlegen.
btw Es scheint, dass das qa_session-Cookie in Ihrem Screenshot ein zufälliges Cookie ist, für dieses ist es in Ordnung, @Pierre-Pretorius-Antwort zu verwenden, es wird funktionieren.
für PHP 5.6.40 siehe meine andere Antwort hier: https://stackoverflow.com/a/64960472/1641763
14046700cookie-checkWie behebt man „Dieses gesetzte Cookie wurde aufgrund von Benutzereinstellungen blockiert“ in Chrome? (Stackoverflow-SSO-Anmeldung/Ajax-CORS-Anfrage)yes
@Jay Blanchard: Ich habe ausdrücklich gesagt, dass es nicht darum geht, die Chrome-Einstellungen zu ändern (was eine akzeptierte Antwort in der anderen Frage ist). Und es befasst sich nicht mit Single-Sign-On, Ajax und PHP. – Bitte seien Sie so nett und entfernen Sie das Schließen-Flag.
– Benutzerbild
25. Juni 2020 um 14:54 Uhr
Haben Sie alle Duplikate recherchiert und festgestellt, dass keines zu Ihnen gehört?
– Jay Blanchard
25. Juni 2020 um 14:57 Uhr
Na sicher. ZB stackoverflow.com/… oder google google.com/… … Und noch einmal, nur um auf die Bedeutung hinzuweisen, alle SO/Stackexchange-Benutzer werden betroffen sein.
– Benutzerbild
25. Juni 2020 um 15:00 Uhr
Scheint, dass die Standardeinstellungen für die Neuinstallation in Chrome Cookies von Drittanbietern (alle) blockieren sollen. Dies kann ein Anstieg der SameSite-Anforderungen in einem späteren Versionsupdate sein. Ich denke, dies dient dem Schutz der Benutzer vor sich selbst, was ein kleines Problem darstellt, wenn Chrome entscheidet, dass eines Ihrer eigenen Cookies ein Cookie eines Drittanbieters ist (Cookie, das von einer Domäne gesetzt wird, die nicht die aktuelle Domäne ist).
– Unglaublicher Hut
25. Juni 2020 um 15:13 Uhr
@FunkFortyNiner Nein, wir brauchen eine technische Lösung. In den nächsten Tagen werden viele Websites/Entwickler auf dasselbe Problem stoßen.
– Benutzerbild
25. Juni 2020 um 15:19 Uhr