Мені, мабуть, не вистачає основної речі про куки. У 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 не містить вбудованих точок або не починається з крапки.
Чому? У документі вказується, що він повинен щось робити із захистом. Мушу визнати, що я не прочитав усю специфікацію (можливо, це пізніше), але це звучить трохи дивно. Виходячи з цього, встановити cookie на localhost було б неможливо.