Почему междоменный JSONP безопасен , а междоменный JSON нет?

У меня проблемы с соединением некоторых точек, когда я недавно узнал о JSONP. Вот мое понимание:

  • Междоменные запросы XmlHttpRequests для любого контента (включая JSON) запрещены из-за той же политики происхождения. Это защищает от XSRF.
  • Вам разрешено иметь тег скрипта с src, который возвращает JSONP - некоторый JSON, добавленный внутри вызова функции Javascript (скажем, 'Foo')
  • Вы можете иметь некоторую реализацию 'foo 'на странице, которая будет вызываться при возврате данных JSONP, и вы можете делать что-то с данными JSON, которые передаются функции

Почему можно получать междоменные данные, если они были получены через JSONP, но не если он пришел через JSON?

Есть ли предположение, что JSON склонен к разрешению XSRF, а JSONP - нет? Если да, то есть ли какая-то причина, кроме того, что JSONP является каким-то де-факто форматом данных, который никогда не будет предоставлять данные, позволяющие использовать XSRF? Почему вместо этого JSONP, а не какой-то произвольный корневой тег в XML?

Заранее благодарю вас за ваши ответы, пожалуйста, заставьте мой мозг снова поработать после того, как я не смог разобраться в этом.

26
задан hippietrail 29 November 2011 в 19:15
поделиться