Я, должно быть, упускаю некоторые основные вещи о куки. На 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 прямо заявляет, что:
Значение атрибута Domain не содержит встроенных точек или не начинается с точки.
Зачем? В документе указывается, что это связано с безопасностью. Я должен признать, что я не прочитал всю спецификацию (возможно, сделаю это позже), но это звучит немного странно. Исходя из этого, установка куки на localhost будет невозможна.