XHR перекрестного происхождения из пользовательского скрипта в Google Chrome

Кому-нибудь повезло с выполнением XHR перекрестного происхождения из пользовательского скрипта в Google Chrome? Запросы проходят на сервер (я вижу их в журналах), но readystatechanged событие никогда не запускается.

Разрешения на расширение, похоже, не работают. Также как и JSONP.

2 ответа

Решение

Текущие версии Chrome (13.0.781 или новее) теперь поддерживают большинство или все GM_xmlhttpRequest()Функциональность Doc - включая междоменные запросы.
См. Выпуск 18857. Поддержка межсайтового XMLHttpRequest в сценариях содержимого.

Так что теперь этот скрипт прекрасно работает на Chrome (и Firefox, конечно):

// ==UserScript==
// @name            _Cross domain (XSS) GM_xmlhttpRequest, Chrome too
// @include         http://stackru.com/*
// @grant           GM_xmlhttpRequest
// ==/UserScript==

GM_xmlhttpRequest ( {
    method:     "GET",
    url:        "http://www.google.com/",
    onload:     function (response) {
                    console.log (   response.status,
                                    response.responseText.substring (0, 80)
                                );
                }
} );


(Установите этот скрипт, затем просмотрите любую SO-страницу. Скрипт запишет первые 80 символов домашней страницы Google в консоль.)

Начиная с Chrome 13, вы можете выполнять запросы с разными источниками в сценариях содержимого, если вы включили разрешение на веб-сайт в манифесте.

Пользовательский скрипт в Chrome - это контентный скрипт. Сценарии содержимого не могут создавать перекрестные XHR. Если вы хотите сделать XHR перекрестного происхождения, это следует сделать на страницах расширения (фон, всплывающее окно, параметры).

Для получения дополнительной информации: http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html

Другие вопросы по тегам