Я, должно быть, скучаю по некоторым элементам cookie. На localhost, когда я устанавливаю cookie на стороне сервера, и явно указывают домен как localhost (или .localhost). cookie не принимается некоторыми браузерами.
Firefox 3.5: Я проверил HTTP-запрос в Firebug. То, что я вижу:
Set-Cookie:
name=value;
domain=localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
или (когда я устанавливаю домен в .localhost):
Set-Cookie:
name=value;
domain=.localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
В любом случае файл cookie не сохраняется.
IE8: Я не использовал никаких дополнительных инструментов, но файл cookie, похоже, также не сохраняется, поскольку в последующих запросах он не отправляется обратно.
Opera 9.64: И localhost, и .localhost работают , но когда я проверяю список файлов cookie в настройках, домен получает значение localhost.local, даже если он указан в списке localhost. (в списке группировки).
Safari 4: И localhost, и .localhost работают , но они всегда указаны как .localhost в настройках. С другой стороны, cookie без явного домена, он отображается как просто localhost (без точки).
В чем проблема с localhost? Из-за такого количества несоответствий должны быть некоторые специальные правила, касающиеся localhost. Кроме того, мне не совсем понятно, почему домены должны начинаться с префикса? RFC 2109 прямо заявляет, что:
Значение атрибута домена
не содержит встроенных точек или не содержит
начать с точки.
Почему? В документе указывается, что это связано с безопасностью. Я должен признать, что я не прочитал всю спецификацию (возможно, сделаю это позже), но это звучит немного странно. Исходя из этого, установка куки на localhost будет невозможна.