に関連する一般的な誤解(および誤用)が403 Forbidden
あります。サーバーがリクエストについてどのように考えているかについて何も伝えないことになっています。具体的に言うと、
あなたが要求しているものは手に入れましたが、あなたが何をしようとしても、私は要求を処理しません。だから試して停止します。
UAまたはクライアントはそれを解釈して、リクエストが機能しないことを意味し、適切に応答する必要があります。
これは、ユーザーに代わってリクエストを処理するクライアントに影響を与えます。ユーザーがログインしていない、またはタイプミスがある場合、リクエストを処理するクライアントは、「ごめんなさい、何もできません」と返信する必要があります取得し、403
将来のリクエストの処理を停止します。明らかに、障害が発生してもユーザーが引き続き個人情報へのアクセスを要求できるようにする場合、これはユーザーに敵対的な動作です。
403
対照的であり401 Authorization Required
、ないサーバは限り、あなたは正しい資格情報を渡すようとして要求を処理することを離れて与えます。これは通常、人が聞い403
たときに考えることです。
また404 Page Not Found
、他の人が指摘したように、「そのページが見つかりません」と言うだけでなく、サーバーが将来のリクエストに対して成功または失敗の主張をしないことをクライアントに提案するように設計されています。
とを使用する401
と404
、サーバーはクライアントまたはUAに処理方法について何も伝えません。別の応答が得られることを期待して試行を続けることができます。
だから404
、誰にも見せたくないページを処理する適切な方法ですが、特定の状況で表示しない理由については何も伝えたくありません。
もちろん、これは、要求を行うクライアントがささいなRFCフリッピングを気にすることを前提としています。悪意のある十分なクライアントは、偶発的な方法を除いて、返されるステータスコードを気にしません。他の既知のユーザーページと比較することで、非表示のユーザーページ(または潜在的な非表示のユーザーページ)であることがわかります。
つまり、ハンドラーがであるとしましょうusers/*
。私が知っている場合users/foo
、users/bar
およびusers/baaz
作業を返すサーバー401
、403
または404
のためには、users/quux
私が信じるに足る理由持っている場合は特に、私はそれをしようとするつもりはないという意味ではありませんでquux
、ユーザーを。標準的なシナリオ例はFacebookです。私のプロファイルは非公開ですが、公開プロファイルに対する私のコメントは非公開です。悪意のあるクライアントは、あなた404
が私のプロフィールページに戻っても、私が存在することを知っています。
そのため、ステータスコードは悪意のあるユースケース用ではなく、ルールに従ってプレイしているクライアント用です。そして、それらのクライアントにとって401
、404
リクエストは最も適切です。