JSONP и Backbone.js - PullRequest
       24

JSONP и Backbone.js

26 голосов
/ 24 августа 2011

Я хотел бы использовать Backbone.js с REST API, которым я управляю.Я надеялся, что REST API и скрипты Backbone будут работать в другом домене, но, к сожалению, это будет заблокировано, поскольку это междоменный запрос.Запросы?Или у кого-нибудь есть опыт ручного добавления поддержки JSONP в систему Backbone.js sync?

Ответы [ 2 ]

34 голосов
/ 03 апреля 2012

Поддержка JSONP для операций GET может быть добавлена ​​через опции fetch.

В том же хеше, где вы настраиваете свои обработчики success и error, добавьте объект следующим образом:

{dataType: "jsonp"}

Это передаст опцию jsonp обработчику jjuery ajax, и автоматически вы получите поддержку JSONP для извлечения моделей / коллекций.

20 голосов
/ 24 августа 2011

Вы не сможете использовать весь API REST с JSONP.Вы можете вызывать только запросы GET с помощью JSONP (он работает, записывая новый тег <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, которая позволяет вам как разработчикулегко обойти ограничение, установленное единой политикой происхождения, что, в свою очередь, упрощает взаимодействие и демонстрацию API javascript через границы домена.

Это немного сложнее и работает с некоторымиизвестные взломы iframe (которые иногда используются в виджетах javascript, таких как GMaps, виджеты facebook, ...).

Надеюсь, эта помощь!

...