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