有沒有人有幸從谷歌瀏覽器中的用戶腳本執行跨源XHR?請求通過服務器(我可以在日誌中看到它們),但是,從未觸發過readystatechanged
事件。谷歌瀏覽器中用戶腳本的跨源XHR
擴展權限似乎沒有做到這一點。 JSONP也不是。
有沒有人有幸從谷歌瀏覽器中的用戶腳本執行跨源XHR?請求通過服務器(我可以在日誌中看到它們),但是,從未觸發過readystatechanged
事件。谷歌瀏覽器中用戶腳本的跨源XHR
擴展權限似乎沒有做到這一點。 JSONP也不是。
當前版本(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/*
// ==/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兼容的理由。 – Pranav 2011-09-20 16:38:36
請注意,這僅適用於'@ require'(與上述類似),[不適用於'@ match'](https://code.google.com/p/chromium/issues/detail?id=112746)。後者將拋出'XMLHttpRequest無法加載[...] Origin chrome-extension:// [...]是Access-Control-Allow-Origin不允許的。 – Arjan 2013-02-26 23:02:54
從Chrome 13開始,如果您在清單中包含網站的權限,則可以在內容腳本中執行交叉源請求。
Chrome中的用戶腳本是內容腳本。內容腳本不能製作跨源XHR。如果你想做跨源XHR,應該在擴展頁面(背景,彈出菜單,選項)中完成。
欲瞭解更多信息:鉻的 http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html
從Chrome 13.0.781開始,此答案已過時。 – 2011-09-17 06:34:19
根據http://code.google.com/chrome/extensions/xhr.html如果將userscript包裝在擴展中,擴展清單可以允許userscript製作XSS XHR。 – bzlm 2010-03-10 15:48:02
感謝您的回覆,我確實瞭解了這一點。這種方法的問題是我無法將其託管在userscripts.org上,並希望它能像其他腳本一樣直接運行。 – Pranav 2010-03-13 22:47:57