Stworzyłem rozszerzenie chrome i z popup.js nazwałem skrypt PHP (używając Xhttprequest), który czyta ciasteczko. Lubię to:
$cookie_name = "mycookie";
if(isset($_COOKIE[$cookie_name]))
{
echo $_COOKIE[$cookie_name];
}
else{
echo "nocookie";
}
Ale dostaję to ostrzeżenie przy błędach w rozszerzeniach.
Plik cookie skojarzony z zasobem obejmującym wiele witryn w (Oto moja domena) został ustawiony bez
SameSite
atrybutu. Przyszłe wydanie przeglądarki Chrome będzie dostarczać pliki cookie z żądaniami obejmującymi wiele witryn, tylko jeśli zostaną ustawione za pomocąSameSite=None
iSecure
. Możesz przeglądać pliki cookie w narzędziach dla programistów w obszarze Aplikacja> Pamięć> Pliki cookie i zobaczyć więcej szczegółów na https://www.chromestatus.com/feature/5088147346030592 i https://www.chromestatus.com/feature/5633521622188032 .
Próbowałem utworzyć taki plik cookie, ale to nie pomogło.
setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);
Postępując zgodnie z instrukcjami z tego pytania.
setcookie
zastępstwo, które wymaga dodatkowego argumentu$sameSite
. Argumentem może byćNone
,Lax
lubStrict
. Dostępny jest również interfejs OOP.Odpowiedzi:
Jestem też w „próbie i błędzie”, ale ta odpowiedź od Github z Google Chrome Labs trochę mi pomogła. Zdefiniowałem go w moim głównym pliku i zadziałało - cóż, tylko dla jednej domeny strony trzeciej. Nadal przeprowadzam testy, ale chętnie zaktualizuję tę odpowiedź, stosując lepsze rozwiązanie :)
Jeśli masz PHP do 7.2, tak jak mój serwer:
header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');
Lub jeśli twój host jest już zaktualizowany do wersji 7.3, możesz użyć:
setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);
Kolejną rzeczą, którą możesz spróbować sprawdzić w plikach cookie, jest włączenie poniższej flagi, która - ich własnymi słowami - „doda komunikaty ostrzegawcze konsoli dla każdego pliku cookie potencjalnie dotkniętego tą zmianą”:
chrome://flags/#cookie-deprecation-messages
Zobacz cały kod na stronie : https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md , oni też mają kod
same-site-cookies
.źródło
Gdy pojawi się nowa funkcja,
SameSite=None
pliki cookie muszą być również oznaczone jakoSecure
lub zostaną odrzucone.Więcej informacji na temat zmiany w aktualizacjach chromu i na ten temat można znaleźć poście blogu
Uwaga : niezupełnie związane bezpośrednio z pytaniem, ale może być przydatne dla innych, którzy tu wylądowali, ponieważ na początku było to moim celem podczas tworzenia mojej witryny:
jeśli widzisz ostrzeżenie z pytania, które wymienia niektóre witryny stron trzecich (w moim przypadku było to google.com, huh) - oznacza to, że muszą to naprawić i nie ma to nic wspólnego z twoją witryną. Oczywiście, chyba że ostrzeżenie wspomina o Twojej witrynie, w takim przypadku dodanie
Secure
powinno to naprawić.źródło
źródło
Naprawiłem instalację Ubuntu 18.04 / Apache 2.4.29 / PHP 7.2 dla Chrome 80, instalując mod_headers:
Dodanie następującej dyrektywy do naszych konfiguracji VirtualHost Apache:
I restartowanie Apache:
Przeglądając dokumenty ( http://www.balkangreenfoundation.org/manual/en/mod/mod_headers.html ) zauważyłem, że warunek „zawsze” ma pewne sytuacje, w których nie działa z tej samej puli nagłówków odpowiedzi. Dlatego nie używanie „zawsze” jest tym, co działało dla mnie w PHP, ale dokumenty sugerują, że jeśli chcesz objąć wszystkie swoje bazy, możesz dodać dyrektywę zarówno z „zawsze”, jak i bez. Nie testowałem tego.
źródło