Есть ли причины не использовать JSONP для запросов AJA ~ X? - PullRequest
6 голосов
/ 21 августа 2008

Если вы создаете приложение AJA~Xy, есть ли недостатки в использовании JSONP запросов / ответов, даже если вы не планируете какие-либо cross-domain запросы?

Единственное, о чем я могу думать, это то, что есть пара дополнительных байтов для оболочки обратного вызова ...

Edit:

Я нашел этот , который также предлагает security and error handling как потенциальные проблемы ...

Нет обработки ошибок. script injection либо работает, либо нет. Если есть ошибка от injection, она попадет на страницу, и, если не считать обработчика ошибок в широком окне (плохого, плохого, очень плохого), вам нужно убедиться, что возвращаемое значение действительно для server side.

Я не думаю, что error handling - большая проблема ... большинство из нас использует библиотеку для генерации JSON ... правильность моего ответа не имеет значения для этого вопроса .

и безопасность:

В Интернете есть документы, которые могут помочь, но в качестве краткой проверки я бы проверил реферер в скрипте server side.

кажется, что это потенциальная проблема с любым типом ответа ... конечно, нет ничего уникального для JSONP в области безопасности ...?

Ответы [ 4 ]

9 голосов
/ 22 августа 2008

Даунсайд? Он довольно ограничен - вы запускаете запрос «GET» и возвращаете какой-то выполняемый скрипт. Вы не получаете обработку ошибок, если ваш сервер выдает ошибку, поэтому вам нужно также обернуть все ошибки в JSON. Вы не можете действительно отменить или повторить запрос. Вы зависите от мнения различных авторов браузера о «правильном» поведении динамически генерируемых тегов <script>. Отладка несколько сложнее.

Тем не менее, я использовал это время от времени, и не пострадал. YMMV.

5 голосов
/ 08 марта 2009

Возможно получение ошибок при сбое вызова jsonp.

http://code.google.com/p/jquery-jsonp/

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

2 голосов
/ 21 августа 2008

Я бы сказал, что самым большим ограничением могут быть дополнительные издержки на то, чтобы браузер отображал тег сценария для вызова сервера. Кроме того, действительно ли JSONP рассматривается как AJAX, поскольку он фактически не использует объект XMLHttpRequest?

0 голосов
/ 21 сентября 2009

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

http://neil.fraser.name/news/2009/07/27/

...