2011-10-26 4 views
4

Я пишу службу REST, к которой должны обращаться веб-приложения, настольные клиенты, мобильные клиенты и т. Д. Через интерфейс REST. Идея состоит в том, чтобы хранить объекты, такие как заметки, события календаря и т. Д., В общей иерархии и предоставлять HTTP-методы для создания, обновления и удаления документов, поэтому это должно быть идеальной областью для интерфейса REST.Есть REST через кросс-домен AJAX плохая идея в это время (2011)?

Мой план состоит в том, чтобы иметь сервер REST где-то и веб-приложения на других серверах, используя данные, поэтому мне нужно сделать запрос по междоменному запросу, который имеет особые ограничения по соображениям безопасности (см., Например, this article). Я также хочу сделать некоторые обновления веб-материала в режиме реального времени.

Теперь я занимаюсь обширными исследованиями, изучая, что такое CORS и пытается ли это (с торнадо и jQuery.ajax), но к настоящему времени я получаю подозрение, что настройка, которую я нацеливаю, просто скоро появится , Я пробовал только с Firefox (как 3,6 и 9), но я уже возникли проблемы:

  • аутентификации HTTP не работать с jQuery.ajax() (даже если withCredentials установлен)
  • некоторые браузеры не поддерживаешь CORS вообще (говорит Wikipedia)
  • по крайней мере один FF плагин (RequestPolicy) делает CO не работает на всех

Я понимаю, что CORS/AJAX является возможным решением, но, кажется, тоже существует многие ограничения для практического использования. Что вы, люди, которые делали подобное раньше, подумали: это то, что я должен сделать, и надеюсь, что эти проблемы будут решены кто-то когда-нибудь в будущем? Или это слишком рано для подхода кросс-домена REST/AJAX? Какую альтернативу вы бы выбрали для вышеуказанных планов? Когда я начинаю новый проект, я бы хотел сделать это чистым, без JSONP, прокси или других рабочих обходов, но если это не так, я бы сделал это в любом случае.

Спасибо за любые ответы!

ответ

1

Ничего не мешает вам предоставлять ответы в стандартном JSON (например, для случаев, когда CORS доступен в браузере), а в JSONP - в тех случаях, когда это не так. Это не повлияет ни на что, кроме вашего вывода.

Я бы не сказал, что CORS жизнеспособен сам по себе, поскольку IE < 8 не поддерживает его. Я бы также сказал, что нет ничего плохого в JSONP; это технология, используемая крупными игроками (API Facebook, API Twitter, API Flickr, различные API API Google).

Одним словом, вы сказали, что это правильно; В настоящее время CORS недостаточно широко используется для использования.

+0

Итак, я согласен использовать интерфейс JSONP для веб-приложений и использовать REST для других приложений. Недавно я узнал [как backbone.js отображает запросы PUT и DELETE на запросы POST] (http://documentcloud.github.com/backbone/#Sync-emulateHTTP): он просто добавляет параметр HTTP '_method = PUT', фактически отправляя запрос GET. Я собираюсь попробовать это. Спасибо за Ваш ответ! – fqxp