Ich habe eine Chrome-Erweiterung erstellt und aus popup.js ein PHP-Skript (Using Xhttprequest) aufgerufen, das das Cookie liest. So was:
$cookie_name = "mycookie";
if(isset($_COOKIE[$cookie_name]))
{
echo $_COOKIE[$cookie_name];
}
else{
echo "nocookie";
}
Aber ich bekomme diese Warnung bei Fehlern in Erweiterungen.
Ein Cookie, das einer standortübergreifenden Ressource unter (Hier ist meine Domain) zugeordnet ist, wurde ohne das
SameSite
Attribut gesetzt. Eine zukünftige Version von Chrome liefert Cookies mit standortübergreifenden Anfragen nur, wenn sie mitSameSite=None
und gesetzt sindSecure
. Sie können Cookies in Entwicklertools unter Anwendung> Speicher> Cookies überprüfen. Weitere Informationen finden Sie unter https://www.chromestatus.com/feature/5088147346030592 und https://www.chromestatus.com/feature/5633521622188032 .
Ich habe versucht, ein solches Cookie zu erstellen, aber es hat nicht geholfen.
setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);
Befolgen Sie die Anweisungen aus dieser Frage.
setcookie
Ersatz bereitstellen , der ein zusätzliches Argument enthält$sameSite
. Das Argument kann seinNone
,Lax
oderStrict
. Eine OOP-Schnittstelle ist ebenfalls verfügbar.Antworten:
Ich bin auch in einem "Versuch und Irrtum" dafür, aber diese Antwort von Google Chrome Labs 'Github hat mir ein wenig geholfen. Ich habe es in meiner Hauptdatei definiert und es hat funktioniert - nun, nur für eine Drittanbieter-Domain. Ich mache immer noch Tests, aber ich bin gespannt darauf, diese Antwort mit einer besseren Lösung zu aktualisieren :)
Wenn Sie PHP bis 7.2 haben, wie mein Server:
header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');
Wenn Ihr Host bereits auf 7.3 aktualisiert wurde, können Sie Folgendes verwenden:
setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);
Sie können auch versuchen, die Cookies zu überprüfen, indem Sie das folgende Flag aktivieren, das - in eigenen Worten - "Konsolenwarnmeldungen für jedes einzelne Cookie hinzufügt, das möglicherweise von dieser Änderung betroffen ist":
chrome://flags/#cookie-deprecation-messages
Den gesamten Code finden Sie unter: https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md . Sie haben auch den Code dafür
same-site-cookies
.quelle
Mit der neuen Funktion
SameSite=None
müssen Cookies auch als gekennzeichnet werden, daSecure
sie sonst abgelehnt werden.Weitere Informationen zur Änderung finden Sie in den Chrom-Updates und in diesem Blog-Beitrag
Hinweis : Nicht ganz direkt mit der Frage verbunden, könnte aber für andere nützlich sein, die hier gelandet sind, da es mir bei der Entwicklung meiner Website zunächst ein Anliegen war:
Wenn Sie die Warnung aus einer Frage sehen, in der einige Websites von Drittanbietern aufgeführt sind (in meinem Fall war es google.com, huh), bedeutet dies, dass sie behoben werden müssen und nichts mit Ihrer Website zu tun haben. Natürlich, es sei denn, in der Warnung wird Ihre Site erwähnt. In diesem Fall
Secure
sollte das Hinzufügen das Problem beheben.quelle
quelle
Am Ende habe ich unsere Ubuntu 18.04 / Apache 2.4.29 / PHP 7.2-Installation für Chrome 80 durch die Installation von mod_headers repariert:
Hinzufügen der folgenden Anweisung zu unseren Apache VirtualHost-Konfigurationen:
Und Neustart von Apache:
Beim Überprüfen der Dokumente ( http://www.balkangreenfoundation.org/manual/en/mod/mod_modders.html ) habe ich festgestellt, dass die Bedingung "immer" bestimmte Situationen aufweist, in denen sie nicht aus demselben Pool von Antwortheadern funktioniert. Daher hat es für mich mit PHP nicht funktioniert, "immer" zu verwenden, aber die Dokumente schlagen vor, dass Sie die Direktive sowohl mit als auch ohne "immer" hinzufügen können, wenn Sie alle Ihre Grundlagen abdecken möchten. Ich habe das nicht getestet.
quelle