17

私はWhat HTTP status response code should I use if the request is missing a required parameter?を読みましたが、ヘッダーについては特に質問していませんでしたが、コンセンサスがないようです。必要なヘッダーがない場合に返す最も適切なHTTPステータスコードは何ですか?

この質問のコンテキストは、認証が成功したことを前提としています。私は現在400のどちらかを好んでいますが(実際には「不正な構文」のケースではないので、それは正しくはありませんが)、403の場合、403の説明が与えられます。

サーバは要求を理解しました。それを達成することを拒否しています。 承認は役に立ちません。要求を繰り返さないでください。 要求メソッドがHEADではなく、サーバが公開を希望する場合 要求が満たされなかった理由は、理由の説明をエンティティの拒否に対して と記述してください。

これは私にとって最も理にかなっています。

誰か教えてください。ありがとう。

答えて

28

400悪いリクエスト

リクエストのユーザーエラーです。 403とは異なり、クライアント彼らの要求を繰り返すように許可する必要がありますが、唯一の変更後:

10.4.1 400不正な要求要求が原因不正なため、サーバで解釈することができませんでした構文。クライアントは変更を加えずに要求を繰り返してはならない(SHOULD NOT)。

編集マーク・リードは、コメントで指摘するように

、403は「あなたは私を送信したもの。あなたが適切な権限を持っていると構文が有効であったと間違って何もありません、と言う。Iあなたが尋ねたことをしたくない」

太字で表示されている部分には、サーバーがそのように選択した場合、要求を実行したくない理由をクライアントに正確に伝えることができます。

+1

確かに400です。サーバの状態に依存しないリクエストに間違いがある場合、それは400です。サーバ側で唯一間違っていることがわかっているなら(あなたが知っている限り、私は気分ではありません ")、あなたは403を使用します。 –

+0

フィードバックのおかげで、みんな。 –

+0

412(前提条件は失敗しました)はどうですか? –

関連する問題