CORSプリフライト(OPTIONS
)リクエストを受信したときに、よく書かれたHTTPサーバーが返すステータスコードは何ですか?CORSプリフライトリクエストの適切なステータスコードは何ですか?
200
、204
または他の何か?
ステータスコードがケース原点に異なるべきであるが許可され(および対応するヘッダーが設定される)、または許可されていない(とCORSヘッダーが設定されないか、または起源と一致しませんか)?
CORSプリフライト(OPTIONS
)リクエストを受信したときに、よく書かれたHTTPサーバーが返すステータスコードは何ですか?CORSプリフライトリクエストの適切なステータスコードは何ですか?
200
、204
または他の何か?
ステータスコードがケース原点に異なるべきであるが許可され(および対応するヘッダーが設定される)、または許可されていない(とCORSヘッダーが設定されないか、または起源と一致しませんか)?
その要旨は、ちょうど200
を使用しています。
もう少し一般的に:他のOPTIONS
リクエストに返信するCORSプリフライトOPTIONS
リクエストのステータスコードを返信するだけです。関連する仕様はそれ以上のものを必要とせず、推奨しません。
限り、関連する仕様:https://fetch.spec.whatwg.org/で仕様を取得するには、CORSプロトコルのための要件が定義されているところであり、それはステータスが範囲200
でanyhingことができると言う - 299
。 a step saying it can be any “ok status"を持ってCORS-preflight fetch algorithm、からだ
:
状態さん要求と応答リターンの成功と応答のためのCORSチェックがok status
は、これらのサブステップを実行します。...
ある場合
「okステータス」とは何か、仕様には次のように書かれています。
OKステータスは、包含範囲
200
に299
、のいずれかの状態です。
さらに、フェッチ仕様では、200
-299
の特定のステータスは推奨されません。
その他の関連する仕様は、HTTP 1.1仕様であり、HTTP応答のステータスコードの意味を定義するセクションがあり、それにはa specific section that defines Successful 2xxコードが含まれています。
そして、そのセクション内これは言う、あります:
The 200 (OK) status code indicates that the request has succeeded.
The payload sent in a 200 response depends on the request method.
For the methods defined by this specification, the intended meaning
of the payload can be summarized as:
…
OPTIONS a representation of the communications options;
だからCORSプリフライトOPTIONSへの応答だけであることが必要である:
Access-Control-Allow-Methods
と
Access-Control-Allow-Headers
応答ヘッダを含む)通信オプションの
200 OK
だ
。
the rest of the 2xx
codes in that sectionを読んだ場合、204 No Content
を除いて、レスポンスの意味がないことを確認できます。
が今まで行く204 No Content
として、私の知る限りOPTIONS
応答-が、ためにそれを使用して何も間違っはありません、任意のポイントは、実際にもありません。 、HTTPの仕様は、実際にはそのためOPTIONS
ペイロード
OPTIONS
のために戻ってくることを期待しないでください
OPTIONS
応じて、特定の204
ステータスコードを使用しても実用的な目的はありません見ることができるように...)戻って来なかった任意のペイロードでを何もしないでしょう。
私は間違っている可能性がありますが、いくつかのニュアンスがありません。しかし、私はそうは思わない。
ステータスコードは、ケース起源で異なるべき許可され(および対応するヘッダーが設定される)、または許可されていない(とCORSヘッダーが設定されないか、または起源と一致しませんか)?
いいえ、違いはないと思います。とにかく使用することができる200
または204
以外の標準定義コードはわかりませんが、それにかかわらず、仕様は異なるものである必要はなく、異なる場合は別の用途を定義しません。そして、それについて考えてみましょう。これらの2つのケースのステータスコードの相違により、既存のクライアントコードはどのように違うのでしょうか?
この質問に対する回答が「何もありません」の場合は、私が見る限り、それを変えることに意味はありません。
を考えると、上記のすべて、一番下の行です:ちょうどCORSプリフライトOPTIONS
応答のための200 OK
を送ります。ただ200 OK
以外のコードを送信する必要はありません。