私のコードバスアプリはbackbone.jsを使用して自分のサーバーと通信します。アプリケーションは明らかに私のAPIと同じドメインの下で動作しないので、飛行前のOPTIONSですべての重要でないAjaxリクエストが送信されています。なぜそれがそれを行うのか理解しています。しかし、私は自分のサーバーを完全に制御しています!私は正確に何がhttpメソッドとヘッダーがサポートされて知っています。したがって、OPTIONS要求は時間の無駄ではありませんか?どうすれば無効にできますか?Backbone.jsがOPTIONSリクエストを送信しないようにするにはどうすればよいですか?
0
A
答えて
2
あなたはなぜそれがリクエストを行うのかを知っていますが、MDN describes the conditions that you'll get a preflighted requestを持っていない人には何らかの文脈を提供すると言います。
いいえ、無効にすることはできません。
クライアント側コードの作成者は、どのような要求をしたいのか分かっています。
サーバーサイドコードの作成者は、どのような要求を受け入れるかを知っています。
ユーザーのブラウザを書いた会社として、Google(またはMozilla、Operaなど)は、あなたが両方のサイトの作成者であり、自分自身を信頼していることを知らない。彼らは、サイトAがブラウザにサイトBへのリクエストを要求していることが無害であることを知らない。
CORSの前に、著者はちょうどリンクやフォームによって開始される可能性のあるCSRF攻撃に対する防御について心配する必要がありました。
はその後に沿ってXHRとhttp://evil.example.com
に突然、JavaScriptが有効になって
withCredentials
との完全な
http://victim.example.com
から
DELETE
要求をトリガすることができています。サーバーがそれを処理してブラウザに応答した場合、ブラウザはJSエンジンにAccess-Controlヘッダーがないことを伝えれば、かなり悪いことになります。コンテンツは既に削除されています。
許可を得るにはプリフライトが必要です。
これは時間の無駄ではありません。無効にすることはできません。許可を得て返信するだけです。