CORSについて読んでいましたが、実装はシンプルで効果的だと思います。
しかし、私が何かを見逃していない限り、仕様には大きな部分が欠けていると思います. 私が理解しているように、そのリソースへのアクセスを許可するかどうかを、リクエストの発信元 (およびオプションで資格情報を含む) に基づいて決定するのは外部サイトです。これで問題ありません。
しかし、ページ上の悪意のあるコードが、ユーザーの機密情報を外国のサイトに POST しようとしている場合はどうなるでしょうか? 外部サイトは明らかにリクエストを認証しようとしています。したがって、何かを見逃していなければ、実際には CORS を使用すると機密情報を簡単に盗むことができます。
元のサイトが、そのページがアクセスを許可されているサーバーの不変リストも提供できれば、はるかに理にかなっていると思います。
したがって、展開されたシーケンスは次のようになります。
- 受け入れ可能な CORS サーバー (abc.com、xyz.com など) のリストを含むページを提供します。
- ページが abc.com に XHR リクエストを送信しようとしています - 許可リストにあり、認証が通常どおり行われるため、ブラウザーはこれを許可します
- Page は Malicious.com に XHR リクエストを送信しようとしています - サーバーがリストにないため、リクエストはローカルで (つまり、ブラウザーによって) 拒否されました。
悪意のあるコードが依然として JSONP を使用して不正な作業を行う可能性があることはわかっていますが、CORS の完全な実装は、スクリプト タグのマルチサイトの抜け穴を塞ぐことを暗示していると考えていたでしょう。
公式の CORS 仕様 ( http://www.w3.org/TR/cors ) も調べましたが、この問題についての言及は見つかりませんでした。