Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№116-06-2008 01:52:56

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Minefield 3.0

Cookies в Firefox 3

Поддерживаю расширение (LiveJournal Addons), в котором многое построено на Ajax-запросах. С недавнего времени пользователи стали жаловаться на неполадки самого загадочного свойства. Расширение пользуется авторизацией на сервере через cookies. Тесты показали, что при обычном открытии  страниц cookies работают. Но Ajax-запросы возвращают такие ответы, будто cookies не верны или их нет. Один из пользователей нашёл причину.

В настройках третей версии Firefox добавилась новая опция на вкладке «Приватность»: «Принимать cookies со сторонних сайтов». Если галочка снята, расширение не работает правильно.

Я проверил отсылаемые на сайт заголовки при помощи Live HTTP Headers. Оказалось, что при обычном открытии страниц браузер отсылает серверу cookies с авторизацией, а при Ajax-запросах — не отсылает, не воспринимая их как родные для LiveJournal. Не отсылаются вообще никакие cookies, заголовок просто отсутствует.

Оказалось, что при запрете cookies со сторонних сайтов перестают работать и другие расширения (например, Google Reader Notifier, мониторящий известную rss-читалку через Ajax).

Кто-нибудь знаете, в чём причина такой странности, какова природа этой опции и как бороться с нелогичными последствиями?

Отредактировано homo_nudus (16-06-2008 01:54:01)

Отсутствует

 

№216-06-2008 03:30:20

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 2.0

Re: Cookies в Firefox 3

можно вручную добавить в ajax-запрос заголовок с куками.
примерно так:

Выделить код

Код:

ajax.setRequestHeader('cookie', '<cookie_key>');

Отсутствует

 

№316-06-2008 09:35:27

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Minefield 3.0

Re: Cookies в Firefox 3

Shutnik пишет

можно вручную добавить в ajax-запрос заголовок с куками.

А есть ли способ автоматически получить cookies, подходящие для запроса? Например, по location запрашиваемого документа?

Отсутствует

 

№416-06-2008 09:47:29

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 2.0

Re: Cookies в Firefox 3

homo_nudus
есть сервис для куков, из него можно. я сам пробовал как раз для такой ситуации, только куки передавал в post параметрах. на mdc легко можно найти ;)

Отсутствует

 

№516-06-2008 14:57:41

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Minefield 3.0

Re: Cookies в Firefox 3

Пример с MDC:

Выделить код

Код:

var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var uri = ios.newURI("http://www.livejournal.com/", null, null);
var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService);
var cookie = cookieSvc.getCookieString(uri, null);

Почему-то в cookie оказывается только последнее cookie из шести, а этого не достаточно. Перечислители из интерфейса nsICookieManager работают только с указанием конкретных доменов разных уровней, а их автоматически не предскажешь. Поэтому проблема остаётся.

Отсутствует

 

№616-06-2008 15:24:45

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 2.0

Re: Cookies в Firefox 3

homo_nudus
хм. у меня не было таких проблем. может быть домен совпадает только у одного?

Отсутствует

 

№716-06-2008 19:01:08

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Minefield 3.0

Re: Cookies в Firefox 3

Shutnik пишет

может быть домен совпадает только у одного?

В том то и дело что домен первого уровня совпадает у всех шести, у пяти совпадает домен полностью (к домену одной из них добавляется www). Но только последняя cookie включается в строку, получаемую из описанного алгоритма.

Отсутствует

 

№817-06-2008 11:48:22

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 2.0

Re: Cookies в Firefox 3

homo_nudus
я не понял, что ты хотел сказать, но попробуй убрать www :)

Отсутствует

 

№917-06-2008 12:00:41

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Minefield 3.0

Re: Cookies в Firefox 3

В списке cookies, относящихся к сайту, есть шесть куков, то есть шесть пар "заголовок - значение" (смотрел в "Настройки - показать cookies - livejournal.com"). В свойстве "домен" для первой стоит ".www.livejournal.com", для остальных пяти значится ".livejournal.com".

При открытии страницы все они плюсуются и отсылаются серверу (смотрел в логах запроса при помощи Live HTTP Headers).

При Ajax-запросах и запрете куков для посторонних сайтов ни один из куков не отправляется.

При использовании nsICookieService, как описано выше, в результирующую строку попадает только последняя пара из шести.

Отредактировано homo_nudus (17-06-2008 12:03:03)

Отсутствует

 

№1019-06-2008 21:55:50

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771
UA: Minefield 3.1

Re: Cookies в Firefox 3


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№1120-06-2008 00:48:44

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 3.0

Re: Cookies в Firefox 3

Да, очень похоже. Причём соотношение host и пути для GET одно и то же при XMLHttpRequest и при обычном запросе, а поведение разное. Спасибо за ссылку. Будем надеяться, что исправят.

Насколько я понимаю, доступа к списку исключений из расширения нет, потому что он хранится в отдельном файле SQLite. Так что ничего, похоже, с этим не поделаешь, только пользователей предупреждать.

Отредактировано homo_nudus (20-06-2008 00:49:25)

Отсутствует

 

№1220-06-2008 01:18:36

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771
UA: Minefield 3.1

Re: Cookies в Firefox 3

homo_nudus
Неплохо бы для начала подтвердить баг :)


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№1320-06-2008 01:57:26

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 3.0

Re: Cookies в Firefox 3

А что для этого нужно? Аккаунт я там завёл, но не могу разобраться, как подтверждать. Vote? Или нужно откомментировать?

Отсутствует

 

№1422-06-2008 17:13:33

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771
UA: Minefield 3.1

Re: Cookies в Firefox 3

homo_nudus
Откомментировать.


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№1522-06-2008 18:14:46

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 3.0

Re: Cookies в Firefox 3

Откомментировал, правда, с дурацкой ошибкой. Жаль, править комментарии нельзя.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]