2016-04-16 15 views
0

私のコードバスアプリはbackbone.jsを使用して自分のサーバーと通信します。アプリケーションは明らかに私のAPIと同じドメインの下で動作しないので、飛行前のOPTIONSですべての重要でないAjaxリクエストが送信されています。なぜそれがそれを行うのか理解しています。しかし、私は自分のサーバーを完全に制御しています!私は正確に何がhttpメソッドとヘッダーがサポートされて知っています。したがって、OPTIONS要求は時間の無駄ではありませんか?どうすれば無効にできますか?Backbone.jsがOPTIONSリクエストを送信しないようにするにはどうすればよいですか?

答えて

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ヘッダーがないことを伝えれば、かなり悪いことになります。コンテンツは既に削除されています。

許可を得るにはプリフライトが必要です。

これは時間の無駄ではありません。無効にすることはできません。許可を得て返信するだけです。