Почему было решено, что использование XMLHTTPRequest для выполнения вызовов XML не должно выполнять вызовы через границу домена? Вы можете получать JavaScript, изображения, CSS, фреймы и практически любой другой контент из других доменов. Почему 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 позволяет вам публиковать с учетными данными (куки) на целевой сайт и читать данные, отправленные обратно с сайта, вместе с отправкой учетных данных людей, вы можете организовать некоторый javascript, который будет отправлять серию форм, включая формы подтверждения , в комплекте со всеми сгенерированными случайными ключами, которые были введены, чтобы попытаться предотвратить XSRF. Таким образом, вы можете просматривать целевой сайт, например банк, и веб-сервер банка не сможет определить, что это не просто обычный пользователь, отправляющий все эти формы.