XHR перекрестного происхождения из пользовательского скрипта в Google Chrome - PullRequest
12 голосов
/ 20 декабря 2009

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

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

Ответы [ 2 ]

9 голосов
/ 17 сентября 2011

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

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

// ==UserScript==
// @name            _Cross domain (XSS) GM_xmlhttpRequest, Chrome too
// @include         http://stackoverflow.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 в консоль.)

5 голосов
/ 24 декабря 2009

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

Пользовательский скрипт в Chrome - это скрипт контента. Сценарии содержимого не могут создавать перекрестные XHR. Если вы хотите сделать XHR перекрестного происхождения, это должно быть сделано на страницах расширения (фон, всплывающее окно, параметры). Для получения дополнительной информации: http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html

...