Cross-origin XHR от пользователя script в Google Chrome

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

Права расширения не похоже на трюк. Также нет JSONP.

Ответ 1

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

Итак, этот script отлично работает теперь в Chrome (и Firefox, конечно):

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

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


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

Ответ 2

Как и в случае с Chrome 13, вы можете выполнять запросы на кросс-начало в Content Scripts, если вы включили разрешение на веб-сайт в манифесте.

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

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