Почему было решено, что использование XMLHTTPRequest для выполнения вызовов XML не должно выполнять вызовы через границу домена? Вы можете извлечь JavaScript, изображения, CSS, iframes и любой другой контент, который я могу придумать, из других доменов. Почему HTTP-запросы Ajax не могут пересекать границы домена? Это кажется странным ограничением, если принять во внимание, что единственный способ, которым я вижу, что он злоупотребляет, - это если кто-то вставит Javascript на страницу. Однако в этом случае вы можете просто добавить в документ элемент img, script или iframe, чтобы он запросил сторонний URL-адрес и отправил его на сервер.
[Редактировать]
В некоторых ответах указываются следующие причины, давайте укажем причины, по которым они не создают основную причину для запрета этого.
XSRF (Подделка межсайтовых запросов, также известная как CSRF, XSRF)
Вы можете проводить атаки XSRF, не используя это вообще. Как правило, XMLHTTPRequest вообще не используется, просто потому, что очень сложно создать XMLHTTPRequest способом, совместимым со всеми основными браузерами. Гораздо проще просто добавить тег img к URL, если вы хотите, чтобы они загружали ваш URL.
Публикация на стороннем сайте
<script type="text/javascript">
$.post("http://some-bank.com/transfer-money.php",
{ amount: "10000", to_account: "xxxx" })
</script>
Может быть выполнено с
<body onload="document.getElementById('InvisbleForm').submit()"
<div style="display:none">
<form id="InvisbleForm" action="http://some-bank.com/transfer-money.php" method="POST">
<input type="hidden" name="amount" value="10000">
<input type="hidden" name="to_account" value="xxxxx">
</form>
</div>
</body>
JPunyon: почему вы оставляете уязвимость в новой функции
Вы больше не создаете опасностей. Вы всего лишь причиняете неудобства разработчикам, которые хотят использовать его для пользы. Любой, кто хочет использовать эту функцию для зла (иначе удивительный), мог бы просто использовать другой способ сделать это.
Заключение
Я отмечаю ответ от bobince как правильный, потому что он указал на критическую проблему. Поскольку XMLHTTPRequest позволяет отправлять учетные данные (файлы cookie) на целевой сайт и считывать данные, отправленные обратно с сайта, наряду с отправкой учетных данных пользователей, вы можете организовать некоторый javascript, который будет представлять серию форм, включая формы подтверждения , дополнить произвольными сгенерированными ключами, которые были введены в действие, чтобы попытаться предотвратить XSRF. Таким образом, вы можете просматривать целевой сайт, например банк, и веб-сервер банка не сможет сказать, что это был не обычный пользователь, отправляющий все эти формы.