2012-06-23 108 views
9

Firefox插件allow you to do cross-domain communication使用Firefox插件的跨域通信

有什麼辦法可以公開這個函數,所以我可以從任何頁面啓動跨域ajax(假設我已經安裝了這個插件)?

編輯: 我知道什麼是CORS和CORS纔有意義,當你有控制的服務器上,但我不知道。這裏的關鍵是我控制瀏覽器,我承擔風險,所以我問是否要將插件階段的跨域功能導出到用戶區域。

+0

您應該看看CORS(請參閱bart的答案) - 允許任何網頁在不進行任何檢查的情況下執行跨源請求將是一個巨大的安全漏洞。 –

+0

CORS只有在控制服務器時纔有意義,但我不知道。這裏的關鍵是我控制瀏覽器,我承擔風險,所以我問是否將插件平臺的跨域功能導出到用戶區。 – Howard

+0

你的意思是像greasemonkey一樣嗎? – Yansky

回答

5

正如你所說看到這個SO項目,同源策略只能用於保護客戶端(自己),通常是從XSS攻擊。

我不確定你想用插件實現什麼,但你當然可以try doing the following on your own machine。通過更改Firefox上的設置,您可以忽略相同的源策略。

如果你想開發一個允許跨域訪問的插件(因此可能會打開你的客戶端的漏洞),你可能需要使用一些非傳統的技巧。我可以考慮一些方法,但像CORS一樣,您至少需要訪問SOME服務器。實際上,您可以創建一個代理來取代服務器上的資源。也就是說,您插件的用戶點擊了http://yourwebsite.com/?url=http://someotherwebsite.com/resource

我能想到沒有辦法做一個客戶端唯一的解決方案。

+1

「我可以想象沒有辦法做一個客戶端唯一的解決方案。」至少有Chrome的解決方案http://stackoverflow.com/questions/15002408/enable-xss-in-chrome-and-or-safari。我仍然無果尋找FF的等效... – spinkus

+0

找到了解決方案,在FF 40中爲我工作http://stackoverflow.com/questions/17088609/disable-firefox-same-origin-policy/18495435# – spinkus

2

僅當服務器允許並且瀏覽器支持時,跨域通信(也稱爲跨源資源共享)纔是可能的。這Wikipedia文章中

輕鬆閱讀

W3C文件這仍然是一個工作草案中Heavy Reading的。

我已經在C# Webserver中使用CORS一年了。我注意到,每當我不在服務器端添加CORS頭文件時,我遇到了same origin policy。即使請求到相同的IP地址,但不同的端口。

如果服務器不支持CORS,你會發現你的跨域請求失敗

編輯:

我最近才知道,同一個域策略可以利用周圍被Yahoo! Query Language (YQL)工作。請參閱鏈接瞭解更多信息。

爲例Cross Domain Post method ajax call using jquery with xml response

0

Userscripts具有跨域的XMLHttpRequest,他們甚至會在所有瀏覽器上運行。