状態メッセージ

理由句 (HTTP)

[4] 理由句 (reason-phrase) は、状態行において状態符号に添えて記載する短い文字列です。

仕様書

意味

[6] 理由句は数値の状態符号に関連付けられたテキストの説明です >>3

[7] 初期のインターネットのプロトコルが対話的なテキストクライアントでよく用いられたことに因んだもの >>3 とされています。

構文

[5] 理由句は、 HTABSPVCHARobs-text で構成される零文字以上の任意の文字列 >>3 とされています。

  1. *
    1. |
      1. VCHAR
      2. HTAB
      3. SP
[18] 非ASCII文字は使えません。

文脈

[19] 理由句は次の場面で使われます。

[20] HTTP/2 には理由句はありません。

[23] SPDY にはありましたが HTTP/2 では削られています。

処理

[16] は任意の理由句を記述できます。

[8] クライアント理由句の内容を無視するべきです >>3

[12] 理由句にはしばしば有用な情報が含まれているので、開発ツールの類では表示できるようになっているべきかもしれません。

典型的な理由句

[13] 状態符号の仕様書には、典型的な理由句が添えられています。

[14] その一覧は状態符号の項を参照してください。

[17] 仕様書の理由句推奨 (recommendation) に過ぎず、 プロトコルの動作に影響を与えず好きな値にできます >>15

長さ

[21] 仕様上の長さ制限はありません。通常は十数文字程度の短い英単語列です。

空白が含まれるものも普通です。

[22] Firefox は、数十MBあっても正常に扱えます (少なくてもそこでエラーにはなりません)。 IE も同様のようですが、 Firefox と比べても極めて時間がかかります (ので計測不能)。

[24] Chromeヘッダー部全体の長さ制約があります。

メタ変数 RESPONSE_REASON (CGI)

[1] RFC 3050 (SIP−CGI/1.1) 5.5.1.15 RESPONSE_REASON
  • RESPONSE_REASON = Reason-Phrase

If the message triggering the script was a response, this variable indicates the textual string specified in the response.

スクリプトの引き金となったメッセージが応答である場合、 この変数は応答中に指定される文字列を示します。

[2] この変数が必須なのか何なのか RFC 3050 には書いてないんですが、 RESPONSE_STATUS が提供される場合にはこちらも必ず提供する必要があるんじゃないでしょうか。空文字列の可能性もあるとはいえ。

実装

[11] 側のアプリケーションの実装のための各言語のライブラリー等では、 応答に含めるべき状態符号と共に理由句を指定できることもあれば、 できないこともあります。指定できない時や、指定できても省略されている時は、 ライブラリー等、あるいはの実装によって理由句が補われるのが普通です。

メモ

[9] 理由句は多くの場合状態符号から自動的に決まる文字列 (仕様書に示されている文字列) が使われますが、仕様書の版や実装によって微妙に異なっていることもあります。

[10] によっては、状態符号で表されないより詳細な情報を理由句に含めることもあります。

[25] PSGI should allow the 0th array element to be a full HTTP status line · Issue #23 · plack/psgi-specs ( 版) <https://github.com/plack/psgi-specs/issues/23>

[26] PSGI should allow the 0th array element to be a full HTTP status line · Issue #23 · plack/psgi-specs () <https://github.com/plack/psgi-specs/issues/23>

[27] Make status message default to the empty byte sequence (annevk著, ) <https://github.com/whatwg/fetch/commit/0dec453f642c1fe57e6e7627c9a66cf7f8b8394d>

[28] Response `statusText` is ambiguous and unclear for HTTP/2 · Issue #599 · whatwg/fetch () <https://github.com/whatwg/fetch/issues/599>

[29] Response.redirect() results in status message still being OK? · Issue #664 · whatwg/fetch () <https://github.com/whatwg/fetch/issues/664>

[30] Make status message default the empty byte sequence by annevk · Pull Request #600 · whatwg/fetch () <https://github.com/whatwg/fetch/pull/600>

[31] 1397646 - For HTTP/2 statusText (both Fetch and XMLHttpRequest) should always be the empty byte sequence () <https://bugzilla.mozilla.org/show_bug.cgi?id=1397646>