2011-02-09 114 views
2

我創建了一個支持GET/POST/PUT/DELETE請求的RESTful API。現在我希望我的API有一個Javascript客戶端庫,並且我想用JSONP來繞過跨域策略。這有效,但當然只適用於GET請求。使用PUT/POST/DELETE跨域請求的JSONP問題

所以我開始思考如何實現這樣的事情,並在同一時間試圖使其無痛使用。

我想編輯我的API實現並檢查每個HTTP請求。如果它是一個JSONP請求(它在查詢字符串中有一個「回調」參數),我強制每個API方法都由GET請求執行,即使它應該被POST或DELETE等其他方法調用。

這不是一個RESTful方法來解決這個問題,但它有效。你怎麼看?

也許另一種解決方案可能是動態生成一個IFrame發送非GET請求。有小費嗎?

回答

1

有在這裏一個非常類似的問題,一些相關的點...

JSONP Implications with true REST

跨域限制是有原因的;-)

JSONP可以讓你暴露有限,安全的,只讀的API跨域訪問視圖 - 如果你破壞了這一點,那麼你可能會打開一個巨大的安全漏洞 - 惡意網站可以通過包含一個帶有href指向的圖像來對API進行破壞性調用API的右側部分

讓您的web應用程序公開通過iframe訪問的某些功能,其中所有ajax都發生在web應用程序域的上下文中,這絕對是更安全的選擇。即使那樣,你仍然需要考慮CSRF。 (看看Django博客上的最新安全公告,就像本週發佈的那樣,所有對Django Web應用程序的JavaScript調用都必須經過默認的CSRF驗證)

+0

Thx - 你知道任何資源開始IFrame hack? – Mark 2011-02-11 15:48:43