2011-09-13 76 views
1

我正在開發一個REST客戶端,它將與名爲attask的項目管理服務交談。有沒有理由不使用JSONP?

他們的REST API很方便,因爲它返回簡單的JSON,這在我的代碼中很容易使用。因此,我決定用JQuery構建接口。我很快發現,由於Same Origin Policy的原因,我無法將AJAX從我的網站用於Attask API。

我的第一個想法是開發一個使用RESTSharp的服務器端休息客戶端,它將充當我的JavaScript和Attask API之間的橋樑。

在我開始執行該實現之前,我發現了JSONP。我相信你們很多人都很熟悉它,但這對我來說是新的。事實證明,Attask API支持JSONP。 JQuery本身支持JSONP,所以突然間我又回到了製作完整的jQuery界面,而不需要服務器端的干預。

我的問題是,有沒有理由不使用JSONP?增加服務器端REST客戶端和使用真正的AJAX調用會有什麼好處嗎?

任何輸入表示讚賞。

+0

我會認爲JSONP是完美的。除非你的要求是你想要在服務器上處理請求或響應。然後,通過服務器上的API,您可能會遇到其他人正在處理的身份驗證,性能,可伸縮性等問題。 –

回答

6

請記住,JSONP正是你正在尋找的東西:解決同源策略的方法。這將帶來所有相同原產地政策意圖避免的安全問題。好處是您可以選擇您信任的特定域名。缺點是,如果該域名決定違反您的信任,他們現在可以在您的網頁上運行任意的JavaScript代碼,從而允許他們發送任何他們想要的信息到他們自己的服務器。

如果你信任他們,就去做吧。如果您不這樣做,請設置您自己的服務器端代理。

+0

非常好的一點!我甚至沒有想到這一點。我也意識到,針對他們的API進行身份驗證將是一個很大的問題,因爲我將不得不以純文本的形式向瀏覽器呈現證書。儘管我信任Attask,但我認爲仍然有足夠的風險和問題值得服務器端的干預。感謝您的反饋! – Chev