JSONP и Backbone.js

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

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

26
задан Chris W. 24 August 2011 в 00:54
поделиться

1 ответ

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

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

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

20
ответ дан 28 November 2019 в 06:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: