XML呼び出しを行うためにXMLHTTPRequestを使用しても、ドメイン境界を越えて呼び出しを行うべきではないと決定されたのはなぜですか?JavaScript、画像、CSS、iframe、および他のドメインから考えられる他のほぼすべてのコンテンツを取得できます。Ajax HTTPリクエストがドメインの境界を越えることが許可されていないのはなぜですか?それが悪用されているのを私が見ることができる唯一の方法を考えると、誰かがJavascriptをページに挿入した場合、それを置くのは奇妙な制限のように思えます。ただし、この場合、ドキュメントにimg、script、またはiframe要素を追加するだけで、サードパーティのURLを要求してサーバーに送信できます。
[編集]
いくつかの回答は次の理由を指摘していますが、これを許可しない主な理由を作成しない理由を指摘しましょう。
XSRF(クロスサイトリクエストフォージェリ、CSRF、XSRFとも呼ばれます)
これをまったく使用せずにXSRF攻撃を行うことができます。原則として、XMLHTTPRequestはまったく使用されません。これは、すべての主要なブラウザーと互換性のある方法でXMLHTTPRequestを作成することが非常に難しいためです。URLをロードする場合は、URLにimgタグを追加する方がはるかに簡単です。
サードパーティのサイトへの投稿
<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を防止するために配置されたランダムキーが生成された状態で完了します。このようにして、銀行のようにターゲットサイトを閲覧することができ、銀行のWebサーバーは、これらすべてのフォームを送信するのは通常のユーザーだけではないことを認識できません。