Как мне «поделиться файлами cookie» в расширениях opera?

#javascript #cookies #opera #opera-extension

#javascript #файлы cookie #opera #opera-расширение

Вопрос:

Я пытаюсь написать свое первое расширение для Opera. Это расширение speeddial. Я хочу, чтобы он показывал мне некоторые данные с веб-сайта, но для доступа к этим данным мне нужно войти в систему.

Я вошел в систему, и opera это знает 😉 (Когда я ввожу адрес веб-сайта в адресной строке Opera, все работает просто отлично.) И я хочу, чтобы Opera сообщила JS, что я вошел в систему 😉

Но когда я пытаюсь получить доступ к этому веб-сайту на js, я получаю текст, в котором говорится, что мне нужно авторизоваться:

     r_xmlhttp.open("GET",url,true);
    //r_xmlhttp.withCredentials = 'true'; //even with that on, nothing changes.
    r_xmlhttp.onreadystatechange = user_func;
    r_xmlhttp.send();
  

Мой config.xml (это из руководства;-), добавлен доступ origin и функция opera: совместное использование файлов cookie:

     <?xml version="1.0" encoding="utf-8"?>
    <widget xmlns="http://www.w3.org/ns/widgets" id="http://example.com/SimpleClockSD" defaultlocale="en" viewmodes="minimized">
    <name short="Simple Clock">Clock Speed Dial Extension</name>
    <description>This is an example Speed Dial extension showing a simple clock.</description>
    <author href="http://people.opera.com/danield/">Daniel Davis</author>
    <icon src="images/icon_64.png"/> <!-- Icon source: http://www.openclipart.org/detail/17552 -->
    <feature name="opera:share-cookies" required="false"/>
    <access origin="http://wykop.pl" subdomains="true"/>
    <feature name="opera:speeddial" required="false">
    <param name="url" value="http://wykop.pl"/>
    </feature>
    </widget>
  

Я посмотрел, что происходит с wireshark, и могу сказать, что Opera отправляет другие файлы cookie, кроме JS, и именно поэтому JS говорит, что я не авторизован. Но я хочу, чтобы JS отправлял те же файлы cookie, что и opera, и теоретически он должен это делать, потому что я добавил функцию под названием «opera: share-cookies», верно?

Что я делаю не так?

Ответ №1:

Это должно сработать, однако для начальной разработки попробуйте установить access-origin как *, а затем попробуйте. Кроме того, постарайтесь быть осторожными в отношении источника доступа (www и домена без www). На данный момент попробуйте установить access origin как * и посмотреть, работает это или нет. (Хотя в рабочей среде модераторы, вероятно, не разрешат доступ к origin *).

Ответ №2:

Была такая же проблема, ваше расширение, скорее всего, работает, но по какой-то причине не в режиме разработчика. Когда вы заархивируете его, переименуете в .oex и установите как обычное расширение, оно, вероятно, сработает.