Что ни день, то сюрприз…
Оказывается XmlHttpRequest в этой самой Opera живёт своей собственной жизнью – он существует отдельно от браузера, не знает о существовании cookies и настроек способных "отрегулировать" такое поведение объекта я не нашёл.

Может оно конечно так и задумано (из соображений безопастности, желания отличиться и т.п.), но тогда почему в других браузерах (в частности FF,SM, IE) XMLHttpRequest вместе с запросами отсылает доступные cookies (хранимые и сессионные) ? Они действуют неправильно ? Это небезопастно ? Или где?

Выходов вижу несколько:

  1. Передавать идентификатор с URL-ом (ну нах)
  2. Делать альтернативный интерфейс без XMLHttpRequest (ну о-о-очень лениво…)
  3. Писать идентификатор в javascript и потом для Opera добавлять xmlhttprequestObj.setRequestHeader('Cookie',from_js_session_name + '='+from_js_session_value);
  4. Забить на Opera

Почему мне наиболее симпатичен четвёртый вариант ? До смерти надоело подстраиваться под каждый релиз этой самой злоеб Оперы. Хватает гемороя с IE.

P.S.
И мне не будет стыдно смотреть в глаза пользователям Opera. Вот такое я Чудовище.

20.05.2006 UPDATE:
Спасибо всем откликнувшимся. Проблема решилась…
2WebAngel Да спасибо, действительно дело было не совсем в кукисах (не совсем в XHR). точнее не только в них.
(Опера скачивала favicon.ico, которого не было, далее mod_rewrite -> обработчик.php и т.д. и в общем вызывался нужный файл, в котором требовались треклятые куки.
НО запрос к favicon.ico в опере не передаёт COOKIE.
Что к чему и почему я не знаю. но поскольку все другие-остальные браузеры их передаёт считаю это ненормальным)

Technorati Tags: , ,

XMLHttpRequest, Opera & cookies

4 thoughts on “XMLHttpRequest, Opera & cookies

  • 19.04.2006 at 13:58
    Permalink

    Насчет отношения к Опере полностью поддерживаю.

  • 19.04.2006 at 16:18
    Permalink

    странно, но у меня опера работает (newsalloy.com)

    т е зади на сайт и посмотри что есть полная (ну почти) поддержка через AJAX ( XMLHttpRequest)

    я ничегон е изобретал… може чего не понимать ?

  • 19.04.2006 at 18:26
    Permalink

    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)…
    И вообще мне наверное нужно выделить тестовый случай и положить его на всеобщее обозрение…

Leave a Reply