Почему это так, что если я создаю файл cookie на www.example.com и проведу его на example.com, cookie там не существует? Я планирую просто использовать .htaccess
перенаправить не-www в домен www. Но как я могу это решить?Проблема с файлом cookie PHP - www или без www
ответ
Браузеры являются главным виновником здесь, а не PHP. Они хранят по домену и не знают, что www
- особый случай; с их точки зрения, www.mydomain.com
и mydomain.com
- это разные строки и поэтому имеют разные политики безопасности. Однако есть что-то, что вы можете сделать.
При настройке файла cookie используйте .mydomain.com
(с ведущей точкой). Это скажет браузеру вашего пользователя, чтобы файл cookie был доступен для mydomain.com
и всех поддоменов, включая www
. PHP setcookie имеет аргумент $domain
, но он пятый в списке, поэтому вам может понадобиться установить $expire
и $path
на их значения по умолчанию, чтобы попасть на него.
setcookie('name', 'value', time()+3600, '/', '.mydomain.com');
Для согласованности, однако, вы можете рассмотреть переразводки весь веб-трафик на определенный домен, то есть отправить mydomain.com
трафик www.mydomain.com
, или наоборот. Мое смутное знание SEO (отредактируйте, если оно неверно) говорит мне, что оно полезно, чтобы не дублировать контент, и это избавляет вас от всех таких проблем с проверкой подлинности. Кроме того, если вы храните активы на субдомене, то наличие куки-файлов там замедляет трафик за счет его транспортировки каждый раз, поэтому сохранение файлов cookie приложений только на www
дает вам ускорение скорости.
Here is a tutorial on how to accomplish such a redirect in Apache.
Вы близки к материалам SEO. Неважно, если вы решите сделать это с или без www; до тех пор, пока вы выбираете один и придерживаетесь его. – NotMe
Отредактировано для обобщения: – Matchu
www. * Не является особым случаем. Это соглашение, но оно не имеет кодифицированного значения в RFC-файлах http/cookie.Было бы абсурдно, если бы браузеры волшебным образом предоставляли специальное лечение. Независимо от того, +1. –
потому что php переводит www.mydomain.com иначе, чем mydomain.com. Если домены не на 100% идентичны, cookie не будет совпадать.
И я уверен, что браузер также ищет 100% -ное совпадение имени домена, прежде чем разрешить серверам перезаписывать их.
Просто используйте .htaccess для перенаправления. Это единственный способ справиться с этим во всех браузерах.
Префикс домена с периодом устраняет проблему. Точное совпадение не требуется. – TheJacobTaylor
"потому что php переводит" ... Это не имеет ничего общего с php и все, что связано с браузерами. Браузеры не отправляют каждый файл cookie, который у них есть на веб-сайт. Они выбирают только те, которые имеют соответствующие имена доменов. – NotMe
Я считаю, что вы можете установить куки на example.com (действительно .example.com), и он будет отправлен, если они идут на www.example.com, но не наоборот. Эта стандартная политика безопасности заключается в предотвращении отправки личных данных пользователей на непреднамеренные серверы.
Лично я использую VirtualHosts в моем apache2.conf:
<VirtualHost *:80>
ServerName example.com
RedirectMatch (.*) http://www.example.com$1
</VirtualHost>
... в этом примере, каждый пытается загрузить, например, http://example.com/index.html перенаправлен на http://www.example.com/index.html.
setcookie("CookieName", "value", time()+3600, "/", ".mydomain.com");
- 1. php cookie не работает без WWW или с субдоменом
- 2. WordPress: Перенаправление с [без www] на [www]
- 3. Opencart www и без www
- 4. без WWW на WWW CNAME перенаправлять
- 5. WWW проблема с CURL
- 6. Как перенаправить домен с www или без www
- 7. PHP Перенесите сеанс без www
- 8. Проблема с и без http и www
- 9. WWW ошибки перенаправления без WWW в подкаталоге
- 10. заголовок PHP перенаправляет без WWW
- 11. Перенаправление Rails без www на www без прерывания сеансов пользователя?
- 12. Проблема Java RegExp -. * (Www). * Vs. (www)
- 13. перенаправление без www на www и rewriterule
- 14. Перенаправление не-WWW для WWW без перенаправления
- 15. перенаправление без www на www в wordpress
- 16. развертывания Heroku - проблема с WWW
- 17. как перенаправить запрос без www на www?
- 18. no-www to www без использования https
- 19. Перенаправление URL-адреса без www на www
- 20. формы аутентификации для WWW и без WWW
- 21. Проблема При переадресации с не www URL на www URL
- 22. доменное имя с или без 'www'
- 23. HTTPS без WWW перенаправить
- 24. Переадресовать не-www на www с помощью функции php header()
- 25. Домен Google Analytics с и без WWW
- 26. Перенаправление домена без WWW в то же самое с WWW
- 27. htaccess работает на www., Не работает без www
- 28. Проблема аутентификации с WWW :: Scripter
- 29. URL без www www - using mod_rewrite и CodeIgniter
- 30. домена показывая без WWW
Вы должны установить домен cookie явно. Или используйте что-то вроде https://github.com/delight-im/PHP-Cookie, который автоматически обрабатывает случай «www» и «не-www». – caw