Почему запросы AJAX ограничены одним доменом? - PullRequest
8 голосов
/ 01 июля 2010

Что-то меня очень смущает, почему запросы AJAX ограничены одним доменом?В чем причина этого?

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

Ответы [ 4 ]

17 голосов
/ 01 июля 2010

Изобразите это:

Вы заходите на мой невероятный сайт 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.

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

3 голосов
/ 01 июля 2010

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

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

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

1 голос
/ 01 июля 2010

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

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

0 голосов
/ 01 июля 2010

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

...