JSONP требует модификации сервера? - PullRequest
31 голосов
/ 21 июля 2010

Я понимаю, что jsonp - это метод, позволяющий обойти ту же политику происхождения. Вы в основном ссылаетесь на конечную точку обслуживающего сервера json в теге сценария, поскольку теги сценария освобождаются от политики SO.

Мой вопрос: если на сервере есть конечная точка, обслуживающая json, есть ли какие-либо изменения, необходимые на сервере для использования jsonp в клиенте?

Я думаю, что нет, но хочу быть уверенным ....

1 Ответ

36 голосов
/ 21 июля 2010

Да, JSONP немного отличается при рендеринге, поэтому ваш сервер должен поддерживать его.

JSON выглядит так:

{ "name": "value" }

Тогда как JSONP выглядит так:

functionName({ "name": "value" });

Если все, что вы используете, поддерживает это, вы покрыты, но это не то же самое, что поддержка только JSON.Когда сервер получает запрос, например: http://example.com/json?callback=functionName, вы должны визуализировать вышеизложенное, потому что на странице это выглядит так:

<script type="text/javascript" src="http://example.com/json?callback=functionName"></script>

Это означает, что для чего-то требуетсячтобы быть возвращенным, в качестве иллюстрации, это действительно:

<script type="text/javascript">
  functionName({ "name": "value" });
</script>

Если ваш сервер не не поддерживает JSONP, это будет эффективно:

<script type="text/javascript">
  { "name": "value" }
</script>

... и вы получите синтаксические ошибки, так как это недопустимый JavaScript.

...