Вопрос JSONP для выполнения междоменных запросов PUT / POST / DELETE - PullRequest
2 голосов
/ 09 февраля 2011

Я создал RESTful API, который поддерживает запросы GET / POST / PUT / DELETE.Теперь я хочу, чтобы у моего API была клиентская библиотека Javascript, и я решил использовать JSONP для обхода междоменной политики.Это работает, но, конечно, только для запросов GET.

Так что я начал думать, как реализовать такую ​​вещь, и в то же время пытался сделать ее безболезненной.

Я думал редактироватьмоя реализация API и проверить каждый запрос HTTP.Если это запросы JSONP (в строке запроса есть параметр callback), я заставляю каждый метод API выполняться GET-запросом, даже если он должен вызываться другими методами, такими как POST или DELETE.

Это не RESTful подход к проблеме, но он работает.Как вы думаете?

Возможно, другим решением может быть динамическая генерация IFrame для отправки не-GET запросов.Любые советы?

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

Здесь есть несколько важных моментов по довольно похожему вопросу ...

Последствия JSONP с истинным REST

Существуют междоменные ограничения;-)

Jsonp позволяет вам предоставлять ограниченное, безопасное, доступное только для чтения представление API для междоменного доступа - если вы его подделаете, то вы потенциально открываете огромную дыру в безопасности - вредоносные сайты могут сделатьдеструктивные вызовы вашего API, просто включив изображение со ссылкой, указывающей на правую часть API

Когда ваше веб-приложение предоставляет определенные функциональные возможности, доступные через iframes, где весь ajax происходит в контексте домена вашего веб-приложениябезусловно, более безопасный выбор.Даже тогда вы все равно должны принимать во внимание CSRF.(Посмотрите на последнее объявление о безопасности Django в блоге Django для примера. Начиная с выпуска на этой неделе все вызовы javascript в веб-приложение Django должны проверяться CSRF по умолчанию)

0 голосов
/ 12 июня 2015

Хакер Iframe больше не работает в последних браузерах, больше не используйте его (источник: http://jquery -howto.blogspot.de / 2013/09 / jquery-cross-domain-ajax-request.html )

...