12

有没有人从谷歌浏览器中的用户脚本执行跨源 XHR 运气好?请求通过服务器(我可以在日志中看到它们)但是,该readystatechanged事件永远不会被触发。

扩展权限似乎没有起到作用。JSONP 也不是。

4

2 回答 2

9

当前版本的 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 页面。该脚本会将 Google 主页的前 80 个字符写入控制台。)

于 2011-09-17T06:31:32.207 回答
5

从 Chrome 13 开始,如果您在清单中包含对网站的权限,则可以在内容脚本中执行跨源请求。

Chrome 中的用户脚本是内容脚本。内容脚本不能制作跨域 XHR。如果你想做跨域 XHR,应该在扩展页面(背景、弹出窗口、选项)中完成。

欲了解更多信息: http: //code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html

于 2009-12-24T08:19:31.900 回答