#?SuikaWiki/0.9 [1] 【[[CGI]]】 [[要求]]を運んできた情報プロトコルの名前と版が設定される[[メタ変数]]/[[環境変数]]です。 この値は [[CGI/1.1]] サーバーは必ず提供しなければなりません。 * 仕様書 [REFS[ - [10] [CITE@en[RFC 3875 - The Common Gateway Interface (CGI) Version 1.1]] ([TIME[2011-11-20 06:09:05 +09:00]] 版) ]REFS] * 値 [5] この変数の値は大文字・小文字を区別しませんが、 伝統的に [CODE(ABNF)[protocol]] は大文字にすることになっています。 CGI script の実装は大文字・小文字の違いを吸収するようになっていないことがほとんどであると予想されますから、 サーバーは「よく知られた」 表記とは違ったものを与えるべきではないでしょう。 - [6] この値と応答に使われるプロトコルが一致するとは限らないのにも注意しましょう。 [3] [CODE(CGI)[protocol]] の値は、 URI の scheme と一致するとは限りません。 たとえば、 [CODE(URI)[[[https:]]]] URI が使われたとしても、 プロトコルは [[HTTP]] over [[SSL]] で、実際に関係するのは HTTP だけなので、 [CODE(CGI)[HTTP]] という値が入ります。 * プロトコル名の一覧 [4] ,[CODE(CGI)[HTTP/0.9]],[[HTTP/0.9]],[Apache] ,[CODE(CGI)[HTTP/1.0]],[[HTTP/1.0]],[Apache] ,[CODE(CGI)[HTTP/1.1]],[[HTTP/1.1]],[Apache] ,[CODE(CGI)[[[INCLUDED]]]],取込み,"[Apache], [RFC]" ,[CODE(CGI)[SIP/2.0]],[[SIP/2.0]] [8] Apache では [CODE[[[Action]]]] を使った関連付けみたいな機能がありますが、この機能を使って間接的に呼び出されることとなった CGI でも、普通に呼び出された場合と同じ結果 ([CODE(CGI)@en[HTTP/?.?]]) が得られるようです。 [9] [[w3m]] の [[LocalCGI]] では [CODE(CGI)[HTTP/1.0]] になります。 * [CODE(CGI)@en[INCLUDED]] [11] [CODE(CGI)[INCLUDED]] は、 ほかの文書に取り込まれたときに与えられることがあると [COAR 03] にかかれています。 実際には、 [[SSI]] で取り込みが行われたときに与えられます。 [7] >>4 [CODE(SSI)[[[echo]]]] 擬似要素を使う方法と [CODE(SSI)[[[include]]]] 擬似要素を使う方法の2種類が SSI にはありますが、 [[Apache]] ではどちらでも [CODE(CII)[INCLUDED]] になりました。 * 歴史 [2] [NCSA] では形式は単に 「protocol/revision」としか述べられていませんが、 [COAR 03] で明確化されています。 - SERVER_PROTOCOL = HTTP-Version | extension-version | extension-token - HTTP-Version = "HTTP" "/" 1*digit "." 1*digit - extension-version = protocol "/" 1*digit "." 1*digit - protocol = 1*( alpha | digit | "+" | "-" | "." ) - extension-token = token [CODE(ABNF)[protocol]] であって [CODE(ABNF)[[[token]]]] でないのは、 [[URI]] の [[scheme]] 名との互換性を考慮したのでしょう。