1

コンテンツが一時的に利用できないページの正しい HTTP ステータス コードを見つけようとしていますが、リダイレクトはありません。代わりに、コンテンツが一時的に利用できないことをユーザーに通知するメッセージがページに表示されます。

307 Temporary Redirectリダイレクトがないため、適用できません。

404 Not Found該当する可能性がありますが、コンテンツが見つかったときにこれが正しい応答であるかどうかはわかりません。利用できないだけです。

410 Goneコンテンツは将来再び利用可能になるため、該当しません。

他のコードはどれも、リモートでさえ適用できるようには見えませんでした。使用する正しいコードを知っていて、その理由を説明できる人はいますか?

4

2 に答える 2

1

ここでは 4XX シリーズの応答が適切なようです。RFCから:

ステータス コードの 4xx クラスは、クライアントがエラーを起こしたと思われる場合を対象としています。HEAD リクエストに応答する場合を除き、サーバーは、エラー状況の説明と、それが一時的な状態か永続的な状態かを含むエンティティを含める必要があります。

これを念頭に置いて、403 禁止が最も適切だと思います。

10.4.4 403 禁止

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

私がこれを提案する理由は次の 3 つです。

  1. これは特殊なコードではないため、ブラウザで問題なく動作します。私にとって、これが最も重要な理由です。コンテンツが利用できない理由を説明するページを提供でき、コンテンツが正しく表示されることをかなり確信で​​きます。

  2. サーバーが「あなたのリクエストは理解していますが、現時点ではそのコンテンツは提供しません」と言うのが適切であり、それはまさに説明の最初の 2 行が言っていることです。

  3. ロボット (さらに言えば、人) に対して「このコンテンツについて知っていたことを忘れてください」と明示的には言いません。


完全を期すために、他の応答コード カテゴリを除外した理由は次のとおりです。

2XX成功: このクラスのステータス コードは、クライアントの要求が正常に受信され、理解され、受け入れられたことを示します。

  • ただし、この場合はリクエストを受け付けていません。2XXは正しくないと思います。

3XX リダイレクト: このクラスのステータス コードは、要求を満たすためにユーザー エージェントがさらにアクションを実行する必要があることを示します。

  • 「再試行する前にコンテンツが利用可能になるまで待ってください」という意味で「さらなるアクション」を主張できると思いますが、他の3XXコードを読むと、「さらなるアクション」は通常「即時リダイレクト」を意味します。アウト、適切ではありません。

5XXサーバー エラー: 数字の "5" で始まる応答ステータス コードは、サーバーがエラーを起こしたか、要求を実行できないことを認識している場合を示します。

  • サーバーに問題はありません。ただコンテンツを提供したくないだけです。
于 2013-07-01T13:12:22.477 に答える