2011-06-29 27 views
2

我想寫一個書籤,目標是要能夠從任何網站X提交資料(原始頁他們是點擊書籤時)來我的網站服務器,同時在現場X.住如何獲得使用Bookmarklet的Ajax並繞過Javascript同源策略?

理想,我將能夠發回一個響應並將它彈出某處,但這不是必需的。

我一直在遇到相同的源策略問題 - 即從站點X開始,XMLHttpRequests只能由站點X的域啓動。

有沒有人知道一種解決方法(或他們可以指向我的教程)?一些帶書籤的Ajax?

非常感謝!

回答

3

您可以使用JSONP執行跨域ajax請求(使用GET發送並接收數據爲JSON)。

2

您加載的小書籤可以將數據從主機頁面發佈到您的服務器。這很奇怪,但是隻有JavaScript受同源策略限制。
GETPOST調用到另一個服務器工作正常。

小書籤可以在主機頁中注入隱藏的IFRAMEsrc屬性如http://yourdomain.com/listen

然後建立一個FORM,其屬性爲:target指向IFRAME
最後將表格提交至POST的數據。

可悲的消息是,SOP不會讓你直接閱讀POST的響應,因爲它發生在IFRAME中,並且具有比主機頁面更多的域。

但是,如果您需要請求的反饋,您的小書籤可以使用setInterval輪詢每X毫秒並使用JSONP詢問請求的狀態。

調用類似:
http://yourdomain.com/get-post-status?id=2234234&callback=showResult