Что ни день, то сюрприз…
Оказывается XmlHttpRequest в этой самой Opera живёт своей собственной жизнью – он существует отдельно от браузера, не знает о существовании cookies и настроек способных "отрегулировать" такое поведение объекта я не нашёл.
Может оно конечно так и задумано (из соображений безопастности, желания отличиться и т.п.), но тогда почему в других браузерах (в частности FF,SM, IE) XMLHttpRequest вместе с запросами отсылает доступные cookies (хранимые и сессионные) ? Они действуют неправильно ? Это небезопастно ? Или где?
Выходов вижу несколько:
Передавать идентификатор с URL-ом (ну нах)Делать альтернативный интерфейс без XMLHttpRequest (ну о-о-очень лениво…)Писать идентификатор в javascript и потом для Opera добавлять xmlhttprequestObj.setRequestHeader('Cookie',from_js_session_name + '='+from_js_session_value);Забить на Opera
Почему мне наиболее симпатичен четвёртый вариант ? До смерти надоело подстраиваться под каждый релиз этой самой злоеб Оперы. Хватает гемороя с IE.
P.S.
И мне не будет стыдно смотреть в глаза пользователям Opera. Вот такое я Чудовище.
20.05.2006 UPDATE:
Спасибо всем откликнувшимся. Проблема решилась…
2WebAngel Да спасибо, действительно дело было не совсем в кукисах (не совсем в XHR). точнее не только в них.
(Опера скачивала favicon.ico, которого не было, далее mod_rewrite -> обработчик.php и т.д. и в общем вызывался нужный файл, в котором требовались треклятые куки.
НО запрос к favicon.ico в опере не передаёт COOKIE.
Что к чему и почему я не знаю. но поскольку все другие-остальные браузеры их передаёт считаю это ненормальным)
Technorati Tags: dailyWTF, opera, favicon
Насчет отношения к Опере полностью поддерживаю.
странно, но у меня опера работает (newsalloy.com)
т е зади на сайт и посмотри что есть полная (ну почти) поддержка через AJAX ( XMLHttpRequest)
я ничегон е изобретал… може чего не понимать ?
2lordtime:
может я ситуацию не полностью описал:
1. есть страница /bla-bla-bla/bla.php, этот самый bla.php ставит куку (печеньку) bla_cookie=bla_value;expires=На днях GMT;path=/ (в корень домена) на определённую дату (и есть просто session_start(); // кука с временем жизни до закрытия браузера ).
2. на полученной странице есть javascript, в котором c помощью xmlhttpequest дёргаются данные с сервера.
3. В “нормальных” браузерах этот самый xhr передаёт куку bla_cookie, передаёт сессионую куку и вообще работает так как я хочу ;o), а из оперы передаётся только сессионая кука.
Вообще в about:config нашлась опция “Accept Cookies Session Only”, но она не включена.
На самой странице bla.php хранимая кука видна.
P.S.
Проверял в Операх версий 8.5.X и 9.X (которая beta)…
И вообще мне наверное нужно выделить тестовый случай и положить его на всеобщее обозрение…
скорей все ты что то не так делаешь.
у меня опера в тесте (http://www.mnot.net/javascript/xmlhttprequest/) прошла тест на кукисы 🙂
P.S. Opeara v8.02