Почему запросы Ajax ограничены тем же доменом?

Что-то, что я нахожу действительно сбивающими с толку, то, почему запросы Ajax ограничены тем же доменом? Каково обоснование позади этого?

Я не вижу проблемы с запросом файлов от внешних местоположений, также серверы, заставляющие запросы XMLHTTP, казаться, получить и отправить на внешние прекрасные местоположения.

8
задан informatik01 22 October 2013 в 12:21
поделиться

4 ответа

Представьте себе это:

Вы заходите на мой потрясающий сайт www.halfnakedgirls.com. Вы получаете удовольствие от просмотра того, что выглядит как техническая документация по физиологии человека, но за вашей спиной несколько строк JavaScript выполняют какой-то запрос к другому домену, скажем, www.yourpaypallike.com.

Запросы типа http://www.yourpaypallike.com/account/transfer?to=badguy@evilwebsite.com&amount=984654 или http://www.mymailprovider.com/mails/export?format=csv.

Теперь вы понимаете, почему это запрещено? =)

17
ответ дан 5 December 2019 в 07:56
поделиться

Это сделано в целях безопасности - если веб-сайт может выполнять вызовы AJAX в любой домен, который они хотят на стороне клиента, это представляет серьезный риск.

Однако есть способы обойти это - вы можете заставить свой AJAX вызывать PHP-скрипт в том же домене, который, в свою очередь, может вызывать скрипт из другого домена и возвращать его. Это не будет использовать браузер в качестве средства связи, но будет использовать ваш веб-сервер.

1
ответ дан 5 December 2019 в 07:56
поделиться

Том, это не "запрос Ajax ограничен". AJAX основан на JavaScript. По соображениям безопасности JavaScript запрещен доступ на перекрестных доменах. Если вы действительно хотите использовать междоменный Ajax, вы можете взломать его.

YourPage (Ajax) ----> YourServer ----> ExternalDomain

Вы можете вызвать страницу на своем сервере с помощью Ajax. Ваш домен будет обращаться к внешнему домену со стороны сервера, и получить результат, а затем вернуть вам как ответ Ajax. Конечно, запрос к серверу ExternalDomain будет вызываться БЕЗ отправки файлов cookie для ExternalDomain, которые находятся в памяти вашего браузера. Это потому, что запрос выполняется вашим сервером, а не вашим браузером.

3
ответ дан 5 December 2019 в 07:56
поделиться

Вот некоторая информация для ответа на ваш вопрос: http://en.wikipedia.org/wiki/Same_origin_policy

0
ответ дан 5 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: