13

そのため、 List of HTTP Status Codesを見ると、おそらくプログラミング中に役立つものがいくつかあります。サーバーはプロトコルなどを処理する場合がありますが、これらのコードの多くは、ページの実際のステータスをブラウザーに伝えるのに役立ちます。

では、私の質問は、これらのステータス コードのうち、どのステータス コードを考慮する必要があるかということです。送信するためにチェックする必要があるものと、通常のアプリケーション プログラミングで使用されない可能性が最も高いものはどれか。

興味がある方のために説明すると、これは PHP プログラミングの範囲内ですが、おそらく他の言語にも同様に当てはまるでしょう。

4

6 に答える 6

24

これらの多くは、REST スタイルの API の使用に本質的に役立ちます。例えば:

  • 200 (OK):リソースを要求しました。ここにあります!

  • 201 (作成済み):新しいリソースを作成するように依頼されました。やった!次回はこちらからお伺いさせていただきます。

  • 202 (Accepted):何かをするように頼まれましたが、しばらく時間がかかるので、待ってはいけません。ここで、ステータスを確認できます。

  • 300 (複数選択):何かを求めましたが、十分に具体的ではありませんでした。これらのどれを意味しますか?

  • 301 (Moved Permanently):あなたは何かを求めましたが、今は別の場所にあります。ここに行きました。

  • 302 (発見):何かを求めたが、それは今のところ別の場所にある. ここにあります。

  • 304 (Not Modified):あなたはこれより前に何かを求めましたが、最後に私に尋ねたときから変わっていません.

  • 400 (Bad Request):あなたが私に頼んだことについて、何かが間違っています. あなたが言ったことを修正して、もう一度やり直してください。

  • 401 (無許可):この要求を完了する前に、身元を確認する必要があります。[注: これは、残念ながら名前が付けられたヘッダーの 1 つです。Unauthenticatedというタイトルにする必要があります。403 はUnauthorizedに似ています。]

  • 403 (Forbidden):持ってはいけないものを要求しました。

  • 404 (見つかりません):リソースを要求しましたが、説明に一致するリソースがありません。

  • 500 (サーバー エラー):何か問題が発生したため、現在、要求された内容を提供できません。申し訳ありません。

  • 501 (実装されていません): 現在、そのような要求はサポートしていません。

  • 503 (サービスを利用できません):現在、リクエストに対応できません。

于 2010-01-04T22:48:12.320 に答える
4

より正確に言えば、これらは単なる HTTP ステータス コードであり、HTTP ヘッダーではありません。ヘッダーは多くのことを伝え、クライアントとサーバーの両方から送信され、この回答の範囲を超えています。

HTTP ヘッダーの 1 つ、つまりサーバーからクライアントに送信される最初のヘッダーは次のようになります。

HTTP/1.x 200 OK

また:

HTTP/1.x 404 Not Found

プロトコル識別子の後に表示さHTTP/1.xれる番号は、ステータス コードと呼ばれるもので、その後に対応するステータス メッセージが送信されます。以下は、私が PHP プログラミング時代に使用しなければならなかったステータス コードです。

  • 200 OKが最も一般的です。これは、すべてが正常に機能し、コンテンツで応答していることを意味します。
  • 404 Not Foundは、特定の条件下でサーバーによって自動的に送信されます。特に、リクエストがサーバー上で見つからない実行中のスクリプトにつながる場合です。特に URI を特別な方法で処理するフレームワークを作成している場合は、手動で 404 ステータス コードを設定したい場合があります。たとえば、index.php.htaccess または Apache 設定を使用してすべてのリクエストをルーティングしている間に 1 つの中央実行スクリプトがある場合、Apache が独自に 404 を返すことはほとんどありませんindex.php。しかし明らかに、通信したい URI の中にはどこにもつながっていないものもあり、それには独自の 404 ステータス ヘッダーを送信する必要があります。
  • 301 Moved Permanentlyおよび302 Found(より一般的には「一時的に移動」と呼ばれます)。これら 2 つは、ブラウザーにヘッダーを探して、Locationそこで指定された URL にユーザーをリダイレクトするように指示します。ほとんどの PHP フレームワークには、ヘッダーも処理する HTTP リダイレクト用の独自の関数があります。ネイティブ PHP リダイレクトheader('Location: http://www.google.com');は、HTTP ステータスを自動的に 302 に変更します。私は 302 と 301 の違いを深く理解したことはありませんが、検索エンジン最適化には 301 の方がはるかに優れていると読んだので、常に 301 を使用するようにしています。おそらく、他の誰かが正確な違いが何であるかを啓発することができます. 注意すべきことの 1 つは、POST データを受信するためのページに 301/302 ステータスと Location ヘッダーを配置しないようにすることです。過去にそれで悩んだことがあります。
  • 304 Not Modified通常、Apache の設定に応じて自動的に送信されます。通常の状態でのほとんどのブラウザーには、要求されたアイテムがユーザーのコンピューターにキャッシュされた日時が含まれています。この目的のために、ETag およびその他のヘッダーが使用されます。サーバーの対応するファイルがその時点から変更されていないと Apache が判断した場合、Apache は多くの場合、コンテンツのない 304 を送信します。これは、クライアントにキャッシュされたバージョンを使用するように指示するだけです。
  • 401 Unauthorizedユーザーが Web サイトの制限されたセクションにアクセスしようとすると送信されます。ネイティブのユーザー名/パスワード プロンプトをサポートするいくつかの古い HTML 機能とサーバー テクノロジがあり、プロンプトがキャンセルされた場合や承認されなかった場合に 401 ステータス コードが送信されました。最近ではほとんどの人が、ユーザー認証と権限管理のために独自の PHP 実装を作成しているため、Apache が勝手に 401 を送信することはあまりありません。ステータスを手動で送信して、ページへのアクセスにさらに権限が必要であることを示すことができます。
  • 400 Bad RequestApache が理解できないリクエストを受け取った場合に送信されます。通常、手動で送信することについて心配する必要はありません。
  • 403 Forbiddenおそらく地理的、IP、または禁止の制限のために適切な認証を行っても、ユーザーがアクセスできないエリアにアクセスしようとしているときに、一部の人々によって使用されます。私自身は使用せず、401 と 404 を使用して入力しています。
  • 5xx. 500 シリーズは、開発者としてはあまり目にすることのないコードです。これは、コードまたはサーバーが何か悪いことをしたことを意味します。十分な能力を持つサーバーまたは負荷分散システムがあり、コードにエラーがない場合、500 シリーズは表示されません。
于 2010-01-04T23:06:15.920 に答える
1

まあ、それらはステータスコードであり、ヘッダーではありませんが、それらのいずれかが役立つ可能性があります(ただし、5xxシリーズはそうではない可能性があります)。

于 2010-01-04T22:42:39.493 に答える
1

(ステータスコードの)そのリストをすばやく確認します。これが私がよく使用するものです(私は自分の仕事としてPHP Web開発を行っています)

  • 200 OK:ほとんどの場合、Apacheによって送信されます
  • 301 Moved Permanently:通常、私が送信します(または、rewrite-rulesを使用する場合はApacheが送信します)
  • 302 Found:通常、私が送信します(または、rewrite-rulesを使用する場合はApacheが送信します)
  • 304 Not Modified:通常、Apache(またはその前のリバースプロキシ)によって送信されます
  • 401 Unauthorized:一般的にApacheによって送信されます
  • 403 Forbidden:一般的にApacheによって送信されます
  • 404 Not Found:Apacheと私の両方から送信されました-状況に応じて
  • 410 Gone:一般的に私から送信されます
  • 500 Internal Server Error:Apacheと私の両方から送信されました; これは、「技術的な」エラーが発生したときに私が一般的に使用するものです-たとえそれが決して起こらないとしても^^

そして、これが私が使用できるものです(特にRESTを行う場合)

于 2010-01-04T22:44:52.877 に答える
1

ファイルを提供するため、またはRESTful Webサービスを提供するためにヘッダーを使用することについて話していると思いますか?

その場合、ヘッダーではなく、ステータスコードの後に​​なります。私がよく使用するものは次のとおりです。

200 OK
301 Moved Permanently
302 Found (temporary redirect)
400 Bad Request
403 Forbidden
404 Not found
500 Internal Server Error

もちろん、RESTful Webサービスの場合は、本文に説明を提供するだけでなく、テキストをより説明的なものに変更できます。

次にあります:

418 I'm a teapot
于 2010-01-04T22:46:24.530 に答える
0

私が最も使用したものは次のとおりです。

  • 301 - 永久に移動 - リソースが永久に新しい URL に移動される場合に使用します。
  • 302 - 一時的に移動 - 永続的なリダイレクトができない場合、これをリダイレクトに使用します。
  • 404お探しのページが見つかりませんでした。無効な URL に対してこれを提供するようにサーバーを構成する必要があります。ログでこれらを監視する必要があります。404 が多すぎる場合は、不適切なプッシュの兆候です。
  • 500内部サーバーエラー。エラーが発生したときにこれらを適切に送信するようにサーバーを構成する必要があります。ログで 5xx エラーを監視する必要があります。
于 2010-01-04T22:48:10.940 に答える