2011-02-09 2 views
2

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

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

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

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

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

ответ

1

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

JSONP Implications with true REST

Ограничения междоменное там по причине ;-)

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

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

+0

Thx - знаете ли вы какой-либо ресурс, чтобы начать работу с взломом IFrame? – Mark