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