javascript - JSONP и Backbone.js




(2)

Вы не сможете использовать весь API REST с JSONP. Вы можете вызывать только запросы GET с помощью JSONP (он работает, записывая новый <script> в текущий документ, а затем вызывающий обратный вызов javascript ...).

Чтобы использовать весь HTTP-глагол (POST, DELETE, PUT), вы можете использовать протокол CORS: http://www.w3.org/TR/access-control/ .

CORS - это протокол, согласованный между браузером и веб-службой, который сообщает браузеру, что «ОК» выполняет код Javascript из междоменного вызова

Чтобы использовать это, вам просто нужно включить некоторые пользовательские заголовки в ответ на ваш сервер, который сообщает браузеру, что он согласен принимать запросы с кросс-доменами. Вот сообщение в блоге, в котором объясняется, как реализовать его с помощью RubyOnRails (но он должен быть очень похож на другие рамки ...): http://www.tsheffler.com/blog/?p=428

Это самое простое решение, вы можете использовать backbone.js, как если бы вы были в том же домене, и он работает с большинством современных браузеров (Internet Explorer 8+, Firefox 3.5+, Safari 4+ и Chrome)!

Если вам нужна более старая поддержка браузера, мне удалось сделать работу с easyXDM с помощью easyXDM :

easyXDM - это библиотека Javascript, которая позволяет вам как разработчику легко обойти ограничения, установленные в соответствии с политикой «Одинаковое происхождение», в свою очередь упрощая взаимодействие и раскрытие API-интерфейсов JavaScript через границы домена.

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

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

Я хотел бы использовать Backbone.js с элементом управления REST api I. Я надеялся, что сценарии REST api и Backbone будут работать в другом домене, но, к сожалению, это будет заблокировано, так как это запрос перекрестного домена.

Имеет ли Backbone.js встроенную функциональность для поддержки запросов JSONP? Или, в качестве альтернативы, есть ли у кого-нибудь опыт в ручном добавлении поддержки JSONP к системе sync Backbone.js?


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

В том же хэше, где вы настраиваете свой success и обработчики error , добавьте такой объект:

{dataType: "jsonp"}

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





backbone.js