ドメイン間でデータを取得するサーバー側プロキシを作成することの単純さを考えると、クライアント側 AJAX がドメイン間で呼び出しを行うのを防ぐ最初の意図が何であったかについて、私は途方に暮れています。私は憶測を求めているのではなく、言語設計者 (または彼らに近い人々) から、単に開発者に軽度の不便をもたらすこと以外に、彼らが何をしていると考えていたかについての文書を探しています。
ティア
ドメイン間でデータを取得するサーバー側プロキシを作成することの単純さを考えると、クライアント側 AJAX がドメイン間で呼び出しを行うのを防ぐ最初の意図が何であったかについて、私は途方に暮れています。私は憶測を求めているのではなく、言語設計者 (または彼らに近い人々) から、単に開発者に軽度の不便をもたらすこと以外に、彼らが何をしていると考えていたかについての文書を探しています。
ティア
ブラウザがリバース プロキシとして動作するのを防ぐためです。オフィスの PC からhttp://www.evil.comを閲覧しているとします。そのオフィスには、ローカル ネットワークからのみアクセスできるhttp://intranet.company.comの機密情報を含むイントラネットが存在するとします。 . クロス ドメイン ポリシーが存在しない場合、www.evil.com はブラウザをリバース プロキシとして使用してhttp://intranet.company.comに ajax リクエストを作成し、その情報を別のプロキシで www.evil.com に送信できます。 Ajax リクエスト。
これが私が推測する制限の理由の1つです。
あなたが myblog.com の作成者であり、facebook.com に対して XHR を作成する場合、リクエストで Facebook の Cookie 資格情報を送信する必要がありますか? いいえ、それはあなたのブログからユーザーの個人的な Facebook 情報を要求できることを意味します。
そのためにプロキシ サービスを作成すると、プロキシは Facebook の Cookie にアクセスできません。
また、なぜ JSONP が問題ないのか疑問に思っているかもしれません。その理由は、作成していないスクリプトを読み込んでいるためです。Facebook のスクリプトが JS コードから情報を送信することを決定しない限り、アクセスすることはできません。
この制限の最も重要な理由は、セキュリティ上の問題です。JSON リクエストをブラウザに提供させて、別のドメインへのリクエストで Cookie またはセキュリティ資格情報を受け入れさせる必要がありますか? クライアント環境に直接アクセスできないため、サーバー側のプロキシでは問題になりません。安全なサニタイズされた JSON 固有のリクエスト メソッドの提案がありましたが、まだどこにも実装されていませんでした。
直接アクセスとプロキシの違いは、Cookie およびその他のセキュリティ関連の識別/検証情報であり、これらは 1 つのオリジンに完全に制限されています。
これらにより、ブラウザは機密データにアクセスできます。プロキシは、ユーザーのログイン データを認識していないため、そうしません。
したがって、プロキシは公開データにのみ適用されます。CORSと同様です。
私はあなたが専門家の回答を求めていることを知っています.
document.domain
、副次的な問題で彼のページを変更します。そして、私にとって最も重要なこと:
しかし、あなたの質問を読み直した後、私はまだ答えていないと思うので、なぜこの AJAX セキュリティなのですか? 、繰り返しますが、答えは次のとおりです。
アクセスする Web ページで、デスクトップから任意のコンピューターまたはサーバーにオフィスのイントラネットに電話をかけられるようにしたくないため