我想使用Backbone.js和我控制的REST api。我希望REST api和Backbone腳本能夠在不同的域中生存,但不幸的是這會被阻止,因爲這是一個跨域請求。JSONP和Backbone.js
Backbone.js是否具有支持JSONP請求的內置功能?或者,或者,有沒有人有任何手動將JSONP支持添加到Backbone.js sync
系統的經驗?
我想使用Backbone.js和我控制的REST api。我希望REST api和Backbone腳本能夠在不同的域中生存,但不幸的是這會被阻止,因爲這是一個跨域請求。JSONP和Backbone.js
Backbone.js是否具有支持JSONP請求的內置功能?或者,或者,有沒有人有任何手動將JSONP支持添加到Backbone.js sync
系統的經驗?
您將無法將整個REST API與JSONP一起使用。您只能使用JSONP調用GET請求(它通過在當前文檔上編寫新的<script>
標記,然後調用JavaScript回調...)來工作。
要使用所有HTTP動詞(POST,DELETE,PUT),您可以使用CORS協議:http://www.w3.org/TR/access-control/。
CORS是一個瀏覽器和網絡的服務,告訴瀏覽器,這是「OK」從跨域調用
執行JavaScript代碼要使用此之間協商的協議,只需要在服務器響應中包含一些自定義標題,告訴瀏覽器可以接受跨域請求。下面是一篇博客文章,解釋如何使用RubyOnRails實現它(但它應該與其他框架非常相似...):http://www.tsheffler.com/blog/?p=428
這是最簡單的解決方案,您可以使用backbone.js,就好像您在相同的位置域,它可以與大多數當前瀏覽器(Internet Explorer 8 +,Firefox 3.5 +,Safari 4+和Chrome)一起使用!
如果需要舊的瀏覽器的支持,我沒有管理使用easyXDM使骨幹工作:
easyXDM是一個JavaScript庫,使您作爲開發人員可以輕鬆地解決由相同的地方設置的限制原產地政策,反過來可以輕鬆溝通和揭示JavaScript API的跨域界限。
這是一個有點複雜,並與一些知名的iframe黑客(即有時在JavaScript中的小部件一樣GMaps,Facebook的小工具使用,...)的作品。
希望得到這個幫助!
CORS在從file:// url使用時不起作用。 – sunkencity
根據[microsoft的此鏈接](http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx),CORS支持受限於IE8/9,並沒有使用XMLHttpRequest,它使用XDomainRequest對象。一些亮點(低亮點):只能使用GET/POST,沒有自定義標題,請求內容類型將始終爲text/plain,不能發送具有請求的驗證cookie,必須都在同一個http方案上(例如http&http或https &https), –