有没有人有幸从Google Chrome中的用户脚本执行跨源XHR?请求进入服务器(我可以在日志中看到它们),但readystatechanged
事件永远不会被触发。
扩展权限似乎没有成功。也不是JSONP。
答案 0 :(得分:9)
当前版本的Chrome(13.0.781或更高版本)现在支持大部分或全部GM_xmlhttpRequest()
Doc功能 - 包括跨域请求。
请参阅Issue 18857: Support cross-site XMLHttpRequest in content scripts。
所以这个脚本现在可以在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个字符写入控制台。)
答案 1 :(得分:5)
从Chrome 13开始,如果您在清单中包含对网站的权限,则可以在内容脚本中执行跨源请求。
Chrome中的用户脚本是内容脚本。内容脚本无法生成跨源XHR。如果您希望进行跨源XHR,则应在扩展页面(背景,弹出窗口,选项)中完成。
欲了解更多信息: http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html