Dlaczego po utworzeniu pliku cookie na stronie www.example.com i sprawdzeniu go na example.com plik cookie tam nie istnieje? Zamierzam po prostu użyć przekierowania nie-www do domeny www. Ale jak mam to rozwiązać?Problem z plikiem cookie PHP - www lub bez www
Odpowiedz
Przeglądarki są głównym winowajcą, a nie PHP. Przechowują dane według domeny i nie wiedzą, że www
jest szczególnym przypadkiem; z ich punktu widzenia, www.mydomain.com
i mydomain.com
są różnymi ciągami, a zatem mają różne zasady bezpieczeństwa. Jest jednak coś, co możesz zrobić.
Podczas ustawiania ciasteczka należy użyć .mydomain.com
(z kropką wiodącą). Dzięki temu przeglądarka Twojego użytkownika sprawi, że plik cookie będzie dostępny dla mydomain.com
i wszystkich subdomen, w tym www
. PHPma argument $domain
, ale jest piąte na liście, więc może być konieczne ustawienie $expire
i $path
na ich wartości domyślne, aby uzyskać do niego dostęp.
setcookie('name', 'value', time()+3600, '/', '.mydomain.com');
Dla spójności, jednak użytkownik może rozważyć przekierowanie całego ruchu internetowego do określonej domeny, to znaczy wysłać mydomain.com
ruchu www.mydomain.com
lub vice versa. Moja niejasna znajomość SEO (edycja, jeśli jest niepoprawna) mówi mi, że jest to pomocne, aby nie mieć zduplikowanych treści, a to oszczędza wszystkich takich problemów z uwierzytelnianiem. Dodatkowo, jeśli przechowujesz zasoby w poddomenie, posiadanie plików cookie spowalnia ruch przez konieczność transportu za każdym razem, więc przechowywanie plików cookie aplikacji tylko pod numerem www
zapewnia zwiększenie prędkości.
Here is a tutorial on how to accomplish such a redirect in Apache.
Jesteś blisko rzeczy SEO. Nie ma znaczenia, czy wybierzesz wykonanie z lub bez strony www; tak długo, jak wybierasz jedną i trzymasz się jej. – NotMe
Edytowany w celu uogólnienia :) – Matchu
www. * Nie jest przypadkiem specjalnym. Jest to konwencja, ale nie ma skodyfikowanego znaczenia w dokumentach RFC protokołu HTTP/cookie.Byłoby całkiem absurdem, gdyby przeglądarki dały magiczny efekt specjalnej obróbce www. Niezależnie od +1. –
ponieważ php tłumaczy www.mydomain.com inaczej niż mydomain.com. Jeśli domeny nie są w 100% identyczne, pliki cookie nie będą pasować.
I jestem pewien, że przeglądarka również szuka 100% dopasowania nazwy domeny, zanim serwer może je nadpisać.
Po prostu użyj .htaccess, aby przekierować. Jest to jedyny PEWNY sposób na rozwiązanie tego problemu we wszystkich przeglądarkach.
Przedrostkowanie domeny z kropką rozwiązuje problem. Dopasowanie ścisłe nie jest wymagane. – TheJacobTaylor
"ponieważ php tłumaczy" ... Nie ma to nic wspólnego z php i wszystkim, co ma związek z przeglądarkami. Przeglądarki nie wysyłają żadnych plików cookie do witryny. Wybierają tylko te, które mają pasujące nazwy domen. – NotMe
wierzę można ustawić cookie w example.com (naprawdę .example.com) i zostanie on wysłany, gdy idą do www.example.com, ale nie odwrotnie. Ta standardowa polityka bezpieczeństwa ma zapobiegać wysyłaniu prywatnych danych użytkowników do niezamierzonych serwerów.
Osobiście używam virtualhosts w moim apache2.conf:
<VirtualHost *:80>
ServerName example.com
RedirectMatch (.*) http://www.example.com$1
</VirtualHost>
... w tym przykładzie, każdy próbuje załadować np http://example.com/index.html jest przekierowany do http://www.example.com/index.html.
setcookie("CookieName", "value", time()+3600, "/", ".mydomain.com");
- 1. Problem z serwisem WWW Asp.Net
- 2. inna sesja z adresem URL z-www i bez-www
- 3. Wykonywanie PHP w "środowisku" serwera WWW bez Apache (lub innego serwera WWW)
- 4. Przekieruj WWW na stronę inną niż WWW lub na odwrót?
- 5. Jak przekierować za pomocą adresów URL "www" na bez adresów URL "www" lub odwrotnie?
- 6. Prosty serwer WWW w PHP
- 7. .htaccess przekierowanie zarówno http: // i bez www i https: // www na https: // www non-
- 8. Rozwiązania sieciowe do przekierowania heroka bez www do domeny www
- 9. . Htaccess przekierowanie www do non-www z SSL/HTTPS
- 10. uzyskać stronę appengine bez www
- 11. Routing AngularJS bez serwera WWW
- 12. Usuń problem z plikiem cookie w języku C#
- 13. otwartej stronie WWW z własnych plików cookie w Pythonie
- 14. Problemy z aplikacją WWW
- 15. Nginx: Przekierowanie nie-www do www https
- 16. Jquery: Bieganie AJAX lokalnie bez serwera WWW
- 17. Zadzwoń do serwisu WWW asp.net z PHP z wieloma parametrami
- 18. PHP-FPM z dedykowanym plikiem dziennika błędów
- 19. .htaccess przekierowanie non-www do WWW zachowaniu URI ciąg
- 20. "URL z WWW i URL bez WWW" - czy jest między nimi jakaś różnica?
- 21. Przekierowanie non-www do www z node.js i ekspresowe
- 22. Wielojęzykowy serwis WWW (php i javascript)
- 23. Moduł przepisywania Microsoft - Wymuszenie strony www w adresie URL Lub usunięcie strony www z adresu URL
- 24. Powiadomienia Growl z serwera WWW
- 25. W jaki sposób interfejs serwera WWW z PHP
- 26. Ionic jako serwer WWW
- 27. OpenSSL nie pracuje z PHP wbudowany serwer WWW
- 28. Nginx przepisać non-www-prefiksem domeny www-prefiksem domenie
- 29. Która nazwa kanoniczna jest lepsza? www czy nie www?
- 30. Strona dostępu - WWW :: Mechanize
Musisz jawnie ustawić domenę plików cookie. Lub użyj czegoś takiego jak https://github.com/delight-im/PHP-Cookie, który automatycznie obsługuje sprawę "www" a "nie-www". – caw