Есть ли причины не использовать JSONP для запросов AJA ~ X?

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

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

Редактировать:

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

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

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

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

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

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

21.08.2008 00:56:45
Просто любопытно, почему "AJA ~ X", а не "Ajax"? Это бесполезный способ подчеркнуть, что формат данных «не» XML?
system PAUSE 21.09.2009 16:02:09
да ... извините .. я чувствовал себя бесполезно
danb 21.09.2009 17:49:18
4 ОТВЕТА
РЕШЕНИЕ

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

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

10
22.08.2008 19:03:51

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

2
11.03.2011 07:52:15
Хм, разве это не XMLHttpRequest?
system PAUSE 21.09.2009 16:01:36
Да, перепутал, потому что я печатал слишком быстро.
Nick Berardi 22.09.2009 01:28:39

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

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

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

5
21.09.2009 15:13:11

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

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

0
21.09.2009 17:50:45