2013-12-09 8 views
14

Access-Control-Allow-Methodsヘッダーについて覚えました。アクセス制御可能なメソッドのデフォルト値

Access-Control-Allow-Methods: OPTIONS, HEAD, GET 

私はこのヘッダ(単にAccess-Control-Allow-Origin)を使用したことがないが、私は過去に動作するようにCORSを頂いております。

デフォルトではすべてのメソッドを許可していますか、または未定義の動作で幸運にも得ましたか?ただ、明確にする

+0

これは、_browser_が不要なリクエストをWebサーバーに迷惑をかけさせないようにするためにはとても良いことです。 –

答えて

17

Access-Control-Request-MethodはCORSプリフライトリクエストの上、ブラウザによって設定されたリクエストヘッダであり、それは一つの値だけを持つことができます。 Access-Control-Allow-MethodsヘッダーはCORS応答ヘッダーであり、複数の値を持つことができます。 Access-Control-Allow-Methodsについて質問していると仮定します。これは、サーバーが指定する値であるためです。

Access-Control-Allow-Methodsヘッダは、HTTPメソッドがクロスオリジンリクエストのための特定のエンドポイントに許可されているかを示します。すべてのHTTPメソッドを許可したら、その値をAccess-Control-Allow-Methods: GET, PUT, POST, DELETE, HEADのような値に設定してください。ただし、エンドポイントをいくつかのメソッドに限定したい場合は、それらのメソッドのみを含めるようにしてください。 、このヘッダのみCORSプリフライトリクエストで使用される前に、あなたはこれを見ていなかった理由については

。アプリケーションがCORSプリフライトを使用せず、次にプリフライトをトリガするように変更された可能性があります。アプリケーションでGET/POST以外のHTTPメソッドやカスタムHTTPヘッダーを使用していますか?

あなたはここにCORSプリフライトリクエストについて詳しく知ることができます。http://www.html5rocks.com/en/tutorials/cors/

+0

訂正していただきありがとうございます。そして、CORSはまだ*働いています。私はそれが必要かどうか疑問に思っています。 –

+0

私の質問に答えました: "このヘッダーはCORSプリフライトリクエストでのみ使用されます"。 –

+0

ここでこれらのヘッダーの値を確認できますか?私の場合は、ヘッダーにトークンを送信する必要がありますが、私はAccess-Control-Request-Headers:dauth、content-typeのようなものを見ているように、値は – Taran

1

Access-Control-Allow-Methodsのデフォルトでもプリフライトリクエストの上、すべての簡単な方法でできるようにすることです。 https://www.w3.org/TR/cors/#preflight-request上の流れは(成功したプリフライトリクエストのステップ7)で述べているとおり

リクエストメソッドが方法の任意の方法のための大文字と小文字を区別一致ではなく、単純な方法ではない場合は、キャッシュとネットワークを適用しますエラーのステップ。

そして簡単な方法の定義は次のとおりです。GET HEAD POST

を:それは、次のいずれかの大文字と小文字を区別マッチがある場合

方法は、単純な方法であるといわれています

したがって、プリフライトされたPOSTリクエスト(たとえば、カスタムHTTPヘッダーのため)があり、Access-Control-Allow-Methodsレスポンスヘッダーを送信しない場合、リクエストは引き続き正常に進みます。