47

一部の呼び出しは HTTP 経由で公開され、一部の呼び出しは HTTPS 経由で API キーと暗号化を必要とする RESTful API を設計しています。プライベート リソースの 1 つに HTTP リクエストが送信された場合に、どのような応答コードを送信するかを検討しています。これまでのところ、飛び出すのは412 - Precondition Failedだけですが、標準では、サーバーではなくリクエスタによって前提条件が課されることが示されています。

この状態に対する適切な応答コードはありますか、それともあきらめて400を実行する必要がありますか?

4

5 に答える 5

29

これがHTTPクライアントによって広く受け入れられているかどうかはわかりませんが、厳密に言えばRFCの場合、サーバーは次のように応答する必要があります。

HTTP/1.1 426 Upgrade Required
Upgrade: TLS/1.0, HTTP/1.1
Connection: Upgrade

ソース:
https ://www.rfc-editor.org/rfc/rfc2817#section-4.2

于 2010-03-31T20:06:54.000 に答える
6

返される適切なエラーコードは、403.4-SSLが必要です

RFC for HTTP 1.1には明示的に文書化されていませんが、この動作はそこで概説されている要件と一致します。

サーバーは要求を理解しましたが、それを実行することを拒否しています。承認は役に立たず、リクエストは繰り返されるべきではありません。リクエストメソッドがHEADでなく、サーバーがリクエストが実行されなかった理由を公開したい場合は、エンティティで拒否の理由を説明する必要があります。サーバーがこの情報をクライアントに提供したくない場合は、代わりにステータスコード404(見つかりません)を使用できます。

独自のサブコードを追加すると(SSLの例のように)役立つ場合もありますが、このサブコードはサードパーティにとって意味がないため、使用しないことをお勧めします。

したがって、最終的なエラーメッセージは「403-プライベートリソース」のようになります。APIキーが欠落している場合でも、APIキーが実際にWWW-Authenticateヘッダーフィールドで送信されない限り、「401-Unauthorized」は使用しないでください。

于 2010-03-31T16:53:41.380 に答える
0

対応する https: URI にリダイレクトを送信するだけです。

アップデート

これは間違った答えです - 以下のコメントを参照してください

于 2010-03-31T21:21:48.370 に答える