Междоменные ограничения с Ajax - JSON - PullRequest
0 голосов
/ 08 января 2010

При запросе (ht | x) ml с помощью ajax вы можете отправлять запросы только в один и тот же домен. Но если вы запросите JSON, вы можете отправить его в любой домен. Почему?

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

Ответы [ 4 ]

4 голосов
/ 08 января 2010

Ознакомьтесь с этой статьей Википедии .

Причина, по которой JSON «безопасен», заключается в том, что вы должны передать его через обратный вызов. Удаленный сайт запустит return JSON, и ваша библиотека javascript не просто запустит его вслепую, но и попытается передать его в указанную вами функцию, например jsonpCallback( response ). Поскольку вы не запускаете удаленный код напрямую, гораздо больше под вашим контролем, и все в основном хорошо в мире.

3 голосов
/ 08 января 2010

Причина, по которой он называется JSONP, на самом деле не имеет ничего общего с JSON . Выполнить междоменный запрос ajax так же просто, как добавить тег <script src="http://url.com/data.js></script> на веб-страницу HTML; это базовая концепция JSONP и междоменного ajax.

Что происходит, так это то, что файл data.js интерпретируется JavaScript. Это дает нам возможность получать данные из этого файла data.js (который находится в другом домене), если, например, он загружает функцию, которая доступна в текущей области.

1 голос
/ 08 января 2010
0 голосов
/ 08 января 2010

Внедрение JSON непосредственно на вашу страницу совсем не безопасно.

Вы предлагаете загруженным скриптам полный доступ к ресурсам на вашей странице (данные, куки, логика).

Если внедренный код является вредоносным, он может запускать действия на вашем сервере, публиковать данные на своем сервере (POST разрешен для нескольких доменов, не ответ, но ваши данные все равно отправляются) и т. Д.

Мы создаем веб-приложение, которое интенсивно использует междоменный доступ.
Чтобы решить эту проблему, мы пришли с довольно простым решением JSONP для песочницы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...