2016-04-11 4 views
-2

403レスポンスステータスコードを使用する代わりに、「アクセスが拒否されました」というエラーメッセージが表示された禁止ページに対して、200応答ステータスコードを使用した場合の違いは何ですか?禁止されたWebページに200のHTTPステータスコードを使用するのが適切ですか?

セキュリティ上の影響はありますか?

+0

ユーザーにページを表示する際に何らかの問題が発生した場合、どうしてすべてがうまくいったというステータスコードを送信したいのですか? – tlund

+1

これはJavaではありません。 2 **コードは「OK」のため、** no **です。それはそれには適していません。 – dquijada

+0

これは、トランスポートプロトコルとしてのhttpとビジネスロジックの間の線を引く場所によって大きく異なります。失敗したログイン試行の後にたくさんのエラーを表示するログインフォームがある場合は、htmlが正しく印刷され、ビジネスロジックがエラーなく実行されてから200になるでしょう。 – f1sh

答えて

0

応答ステータスコードは、クライアントがリクエストの結果を理解するのを助けるためのものです。可能であれば、適切なステータスコードを使用する必要があります。

ステータスコードのセマンティクスは、HTTP/1.1の現在の参照であるRFC 7231で定義されています。

200ステータスコードは、要求が成功したことを示しているが、403ステータスコードは、サーバがリクエストを理解したことを示し、それを承認することを拒否:

6.3.1. 200 OK

200(OK)状態コードは要求が成功したことを示します。 200応答で送信されるペイロードは、要求方法によって異なります。 [...]

6.5.3. 403 Forbidden

403(禁止)ステータスコードは、サーバがリクエストを理解したことを示し、それを許可することを拒否する。要求が禁止された理由を公開することを望むサーバーは、その理由を応答ペイロードに記述することができます(存在する場合)。 [...]

返信200が確実に機能します。しかし、より意味のあるステータスコードを返すことができるのであれば、なぜあなたは200を返しますか?正当な理由がある場合は、これをあなたの質問に加えるべきです。

+0

助けてくれてありがとう –

+0

@sahilaroraこの回答があなたの質問を解決したら、それを受け入れることを検討してください。 –

1

サーバーがあなたのリクエストをどのように処理したかに関する情報をHTTP応答コードが伝えます。したがって、サーバーが200で応答する場合は、「OK、要求を受け取りました。正常に処理しました。」と表示されます。 403が返された場合、「あなたのリクエストは正常に受信されましたが、このリソースへのアクセス権がありません」と表示されます。

しかし、技術的には、両方のこのような応答のHTTPヘッダに同様に、同じ形式で返されます

HTTP/1.1 200 OK 

HTTP/1.1 403 Forbidden 

差が意味です。その意味はstandardで定義されています。

コード200で応答しているときは、それがすべて正常でダンディーであることをクライアントに伝えています。403でクライアントに応答している場合は、クライアントにこのリソースへのアクセス権がないと言います。別のクライアントが存在することができ、覚えておいてください:Webブラウザ、クローラ、JavaScriptからAjaxのリクエストなど

だから、あなたは200コードでログインフォームを送信している場合:ウェブを使用している

  1. ユーザーブラウザはログインする必要があることを理解するでしょう。
  2. Google クローラは、members/quality-contentというURLをログインフォームでインデックス付けしますが、実際には元のコンテンツとは異なり、このページをログインフォームでインデックス化しないでください。
  3. JavaScriptを使用してajaxコールバックerrorコールバック関数を実行するときにコールバックを実行します。success

ですから、基本的には、私たちをすべて賛同させ、基準に従ってください! :)

2番目の質問に答えると、アプリケーションの安全性が低下することはありません。

+0

ありがとう、これは私の疑問をクリアする –

+0

素晴らしい!この答えを選択して質問を閉じた状態にすることができます。 – Uzbekjon