6

HTTP ステータス ヘッダーを記述する方法は多数あります。

HTTP/1.1 404 Not Found
Status: 404
Status: 404 Not Found

しかし、意味的に正しく、仕様に準拠した方法はどれですか?

編集: ステータス ヘッダーとは PHP のheader().

4

4 に答える 4

4

関連するものを調査しているときにこの質問に出くわしたので、しばらくして情報を追加しました。

Status ヘッダー フィールドは、もともと CGI 仕様 RFC 3875 の一部として考案されたものだと思います。

https://www.rfc-editor.org/rfc/rfc3875#section-6.3.3

引用するには:

The Status header field contains a 3-digit integer result code that
indicates the level of success of the script's attempt to handle the
request.

   Status         = "Status:" status-code SP reason-phrase NL
   status-code    = "200" | "302" | "400" | "501" | extension-code
   extension-code = 3digit
   reason-phrase  = *TEXT

これにより、CGI スクリプトは、HTTP ステータス行に表示されるデフォルトを上書きするステータス コードを Web サーバーに返すことができます。通常、サーバーはスクリプトからの結果をバッファリングし、クライアントに新しいヘッダーを発行します。これは、修正された HTTP ステータス行で始まり、スクリプトの "Status:" ヘッダー フィールド (および RFC によって義務付けられたその他の変換) を省略した有効な HTTP ヘッダーです。

したがって、すべての例はCGI スクリプトから有効ですが、最初の例だけが HTTP ヘッダーで実際に有効です。後者の 2 つは、CGI スクリプト (またはおそらく FastCGI アプリケーション) からのみ有効です。

CGI スクリプトは、Web サーバーがクライアントに逐語的に渡す完全で有効な HTTP ヘッダーを生成する場合、「非解析ヘッダー」(NPH) モードでも動作できます。そのため、これには Status: ヘッダー フィールドを含めるべきではありません。

私が興味を持っているのは、NPH スクリプトが少し間違っていて、おそらく HTTP ステータス行に加えて、Status: ヘッダー フィールドを発行した場合に、どのステータスを獲得するかということです。明確な兆候が見つからないため、クライアントまたはサーバーのいずれかで、出力を解析しているものの実装に任されていると思われます。

于 2014-02-27T15:41:39.240 に答える
3

https://www.rfc-editor.org/rfc/rfc2616#section-6より具体的にはhttps://www.rfc-editor.org/rfc/rfc2616#section-6.1では、「ステータス: "ステータスコードを示すとき、およびhttp://www.iana.org/assignments/message-headers/message-headers.xmlのヘッダーの公式リストには「ステータス」について言及されていないため、信じたいと思いますヘッダーとして提供しないでください。

于 2013-06-17T00:29:35.403 に答える
1

私が見つけた答えに最も近いのはFast CGI specです。これは、 Status および Location ヘッダーを介してステータス コードを設定することを規定しています。

于 2009-06-26T12:24:49.053 に答える
0

それらの多くはかなり任意の文字列ですが、一般的に使用されるものの w3c の仕様は次のとおりです。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

于 2009-06-17T22:36:08.040 に答える