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