質問

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

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

しかし、どちらが意味的に正確で仕様に準拠しているのですか?

編集:ステータスヘッダーでは、関数を使用して this を意味しますPHPの header()など。

役に立ちましたか?

解決 3

答えに最も近いのは、高速CGI仕様。ステータスおよびロケーションヘッダーを介してステータスコードを設定するように記述されています。

他のヒント

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

Statusヘッダーフィールドは、元々CGI仕様、RFC 3875の一部として発明されたと思います:

https://tools.ietf.org/html/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:"を省略した有効なHTTPヘッダーです。ヘッダーフィールド(およびRFCで義務付けられている他のいくつかの変換)。

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

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

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

http://tools.ietf.org/html/rfc2616#section-6以降、より具体的には http://tools.ietf.org/html/rfc2616#セクション-6.1 では、「ステータス:」の使用については言及されていません。ステータスコードを示す場合、および http:/のヘッダーの公式リスト以降/www.iana.org/assignments/message-headers/message-headers.xml には「ステータス」が記載されていません。ヘッダーとして提供されるべきではないと考えられます。

それらの多くはほとんど任意の文字列ですが、ここには一般的に使用されるものに対するw3cの仕様があります

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top