Cookie в домене интрасети - PullRequest
8 голосов
/ 20 июня 2009

В нашем офисе есть dev-сервер, который находится за брандмауэром. Имя хоста - Франклин. Мы называем все наши серверы в честь ученых или изобретателей.

Когда я устанавливаю файл cookie HTTP:

 Set-Cookie: user=kenny; expires=1245424860.11; Path=/; domain=franklin

Печенье не установлено. Я попробовал следующее без удачи.

.franklin
.franklin.local
franklin.local
.franklin.localdomain
franklin.localdomain

Нужно ли устанавливать какое-то другое имя хоста или я могу установить этот cookie с помощью какой-то магии, которую я еще не знаю?

Ответы [ 2 ]

7 голосов
/ 20 июня 2009

RFC 2109 говорит:

Для предотвращения возможных нарушений безопасности или конфиденциальности, пользовательский агент отклоняет печенье (не хранит его информацию), если какой-либо из верно следующее:

  • Значение атрибута Domain не содержит встроенных точек или не начинается с точки.
  • Значение для запроса-хоста не соответствует домену атрибут.

А также:

Домен По умолчанию используется запрос хоста.

Если ваш хост franklin:

  • Файлы cookie с domain=.franklin будут отклонены, поскольку в них нет встроенной точки.
  • Файлы cookie с domain=.franklin.local будут отклонены, поскольку они не соответствуют фактическому имени хоста вашего сервера.

Решение состоит в том, чтобы переименовать ваше имя хоста в franklin.local или franklin.<tld> и соответственно установить атрибут куки-файла domain (domain=.franklin.<tld>). В качестве альтернативы (как вы выяснили) не указывайте domain и разрешите пользовательскому агенту выполнить откат к хосту запроса.

0 голосов
/ 20 июня 2009

Вы устанавливаете куки из правильного домена? Вы должны получить доступ к веб-сайту через http://franklin/, иначе он не будет работать (см .: та же политика происхождения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...