Как остановить использование доменных файлов cookie для поддоменов? - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть настройки со следующими доменами:

mydomain.com

www.mydomain.com

Существует одна проблема (протестирована в Internet Explorer): если для mydomain.com установлен какой-либо файл cookie, этот файл cookie также действует для www.mydomain.com, даже если я установил файл cookie с тем же именем для www.mydomain.com.

Более конкретные экзамены:

1) пользователь выбирает предпочитаемый язык на сайте mydomain.com, и я установил файл cookie usrlng = ru

2) на следующий день кто-то другой использует тот же компьютер, перейдет на www.mydomain.com и выберет свой язык, а я установил usrlng = de. Но Internet Explorer продолжает отправлять на сервер файлы cookie usrlng = en и usrlng = de (я вижу это в Fiddler)! Почему он отправляет один и тот же cookie дважды и не переопределяет usrlng значением субдомена?

В то же время я вижу, что PHPSESSID корректно перезаписывается для субдомена, на сервер не отправляются два файла cookie PHPSESSID.

Как я могу исправить файл cookie usrlng и заставить его работать так же, как работает PHPSESSID?

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Вы также можете установить разные save_path для каждого ... чтобы они не разделяли сеансы. Пример PHP:

$subdomain = array_shift(explode('.',$_SERVER['HTTP_HOST']));

ini_set('session.save_path','D:\website_sessions\'.$subdomain.'\');

ini_set('session.save_path','D:\website_sessions\'.$subdomain.'\');

PHP необходим доступ для записи в каталог сессий.

1 голос
/ 15 сентября 2011

На данный момент я решил проблему, установив «хост» cookie вместо «домен»; Свойство 'host' позволяет ограничить использование куки для mydomain.com или www.mydomain.com.

Может быть, это единственный путь, и «домен» не может быть настроен на переопределение файлов cookie верхнего уровня.

...