|
|
|
| Проблема в том, что если я устанавливаю куки так:
setcookie('viewed_offers', serialize($viewed_offers), time()+7776000, '/', '', 0);
|
куки принимает только Opera и IE.
Если я пишу так (добавил домен):
setcookie('viewed_offers', serialize($viewed_offers), time()+7776000, '/', 'domain.ru', 0);
|
куки принимает только Safari, Firefox, Chrome.
Почему так? И что нужно сделать, чтобы работало во всех браузерах?
Заранее благодарю за ответ! | |
|
|
|
|
|
|
|
для: G-Style
(21.08.2010 в 07:48)
| | Домен
Для синхронизации cookie-данных с определенным документом (или их группой) браузер определяет домен текущего документа и помещает в cookie-файл записи, соответствующие этому домену. Поэтому, если пользователь собирается просмотреть список всех cookie-данных, содержащихся в свойстве document. cookie, он должен просмотреть все наборы имя-значение, находящиеся в cookie-файле, с именем домена текущего документа. Если пользователь уверен, что документ не будет скопирован на другой сервер в пределах его домена, он может и не использовать параметр domain при сохранении cookie-записей. Автоматическое определение домена текущего документа и занесение его в cookie-файл производится по умолчанию. Необходимо знать, что в формате представления домена должно содержаться по крайней мере две точки.
.mcom.com
.hotwired.corn
В противном случае нужно записать полный URL-адрес домена, включая протокол http://.
*****
А парметр Secure просто опускайте, как и домен (в первой записи). | |
|
|
|
|
|
|
|
для: sim5
(21.08.2010 в 07:52)
| | При добавлении домена (пробовал с протоколам, с точкой в начале еще до того как сюда обратился - не помогло) все браузера, кроме IE всех версий, отлично принимают куки. Если удалить домен, то получается выше изложенная ситуация… я могу полагать, что где-то тут моя ошибка, так как всю ночь я не спал, а писал код. | |
|
|
|
|
|
|
|
для: G-Style
(21.08.2010 в 08:09)
| | Нет никаких проблем с приемом и записей coocies в IE. Может у вас проблемы с браузером/системой? Самое банальное, например, настройки....
PS. Проверьте запись и чтение их из под JavaScript, как в этом случае? | |
|
|
|
|
|
|
|
для: sim5
(21.08.2010 в 08:13)
| | Да, настройки тоже пытался менять, вроде не помогает...
До этого момента брал в расчет то, что IE часто преподносит какие-нибудь неожиданности, но если Вы утверждаете, что такого баг в нем нет, то буду искать в другом направлении.
sim5, спасибо Вам большое, что уделили внимание! | |
|
|
|
|
|
|
|
для: G-Style
(21.08.2010 в 08:18)
| | IE отличается только тем, что может хранить иной максимум записей cookie в отличие от других браузеров.
Есть еще один параметр для cookie, это httpOnly – дополнительный флаг для HTTP-заголовка Set-Cookie, который указывает на запрет чтения/записи данных Cookie посредством JavaScript, отсюда и название: Cookie доступны только через протокол HTTP. Использование httpOnly позволяет веб-разработчикам установить собственную политику безопасности в отношении доступа к Cookie из среды браузера, что по замыслу разработчиков из Microsoft должно помочь в борьбе против XSS-уязвимостей.
Впервые httpOnly был реализован в Internet Explorer 6 SP1 в 2002 году, и с тех времен спецификация практически не претерпела изменений. До сих пор не решена серьезная проблема, ставящая под сомнение безопасность данных Cookie с флагом httpOnly. Речь идет об Ajax и методе XMLHTTPResponse, с помощью которого можно получить доступ к Cookie, используя getAllResponseHeaders()/getResponseHeader().
Некоторые меры были приняты, например, IE7 вырезает существующие Cookie с httpOnly из HTTP-заголовка Cookie, но пока что очень мало браузеров могут противостоять чтению из ответа заголовка Set-Cookie. Среди самых популярных браузеров с httpOnly безопасно работает лишь Opera. Opera вырезает из заголовков весь Set-Cookie, а вот FireFox 3.0.3 и Internet Explorer 7 показывают HTTP-ответ как есть, без какой-либо обработки на предмет наличия Cookie с флагом httpOnly.
Но httpOnly касается только клиентской стороны, и что-то другого, кроме проблем с браузером (или все таки допущенных в чем-то вами ошибок) вроде не должно быть.
PS. Только сейчас обратил внимание - serialize($viewed_offers), возможно через чур ваша запись по размеру, в этом может и кроется ваша причина:
Internet Explorer установили ограничение: 20 cookie-записей для каждого домена;
Строка записи (куки это строки) - практический предел: 2 000 символов на пару имя-значение в пределах максимума (4 000 символов для каждой объединенной cookie-записи домена). | |
|
|
|
|
|
|
|
для: sim5
(21.08.2010 в 08:13)
| | Нашел ответ!
Все же как всегда оказалось, что это очередной сюрприз от IE. Сюрприз заключается в том, что IE не принимает coockie, если в качестве аргумента-домена передать доменное имя формата xx.yy (в моем случае для теста брался домен ap.us).
sim5, Еще раз вырожаю благодарность! | |
|
|
|
|
|
|
|
для: G-Style
(21.08.2010 в 13:26)
| | Ерунда какая, вот кука установленная тестом с доменом вами указанном: "tst","test",на 12 часов,"/",".ap.us"
tst
test
~~local~~/C:/Documents%20and%20Settings/UserName/Local%20Settings/Temp/
1088
4245305600
30100150
9350848
30097737
*
|
Читается в IE и взята с папки его кеша.
А в доменном имени как минимум две точки должно быть. | |
|
|
|
|
|
|
|
для: sim5
(21.08.2010 в 13:59)
| | Эта информация со слов человека, который работал в компании Microsoft с IE. По ссылке (http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx) можно найти то, о чем я говорю. Но у меня в IE куки не принимает в данном формате. Изменил домен на более длинный – работает как надо. Значит не ерунда.
Точку перед доменным именем все популярные (а может и не только популярные) браузеры ставят по умолчанию, если я не ошибаюсь. Но так или иначе с ней тоже пробовал. | |
|
|
|
|
|
|
|
для: G-Style
(21.08.2010 в 15:14)
| | Нет не ставят по умолчанию точку браузеры. Почитаем по ссылке, а вообще у меня под IE сохранены и такие куки, как x.x.xx, так что с проблемами формата (длина имени домена) не сталкивался. | |
|
|
|
|
|
|
|
для: sim5
(21.08.2010 в 15:17)
| | До сего момента с подобной проблемой я не сталкивался тоже. Очевидно, что это каким-то образом зависит от окружения. | |
|
|
|
|
|
|
|
для: G-Style
(21.08.2010 в 15:34)
| | Скорее всего от обновлений ОС. Я никогда не ставлю чистую, а уже с массой примочек и последних обновлений, так что просто видимо не судьба была с таким столкнуться. | |
|
|
|