HTTP/0.9
概要
1990 年に公開
HTTP/1.0 が出てきたので、それ以前の仕様ということで /0.9 と呼ばれている
HTML ドキュメントを要求して取得するだけのプロトコル
現在の HTTP と互換性は無い
他にも「フォーム」と「検索機能」もあった
HTML ドキュメント内で <isindex> タグを利用すると、テキスト入力欄が表示されて検索できていた
warning.icon <isindex> は HTML5 で削除されたため、現在は存在しない
https://www.tohoho-web.com/html/isindex.htm
https://www.w3.org/html/wiki/Elements/isindex
検索すると、アドレスの末尾に ? と単語(+ 区切り)を付けてリクエストを投げる
e.g. http://example.com/?search+word
サーバは、その結果が書かれた HTML を作成して返す
当初のプロトコルでは、以下のようなできないことがあった
1 つのドキュメントを送る機能しかなかった
通信されるすべての内容は HTML ドキュメントであるという想定であったため、ダウンロードするコンテンツのフォーマットをサーバから伝える手段が無かった
クライアントから検索のリクエストを送る 以外 のリクエストを送信できなかった
新しい文章を送信したり、更新したり、削除することはできなかった
リクエストが正しかったか、サーバが正しいレスポンスを返すことができたかといった情報を知る方法が無かった
そこで、1992 年に、先行して使われていた 電子メール や ニュースグループ といったプロトコルの情報を取り込んで、大幅なアップデートが記述された
https://www.w3.org/Protocols/HTTP/HTTP2.html
warning.icon まだ HTTP/1.0 ではない
1992 年版 HTTP/0.9
ほとんど現在の HTTP と同じ
リクエスト
シンプル版とフル機能版の 2 種類のリクエストフォーマットがあった
シンプル版は 0.9 互換のモード
フル機能版は 1.0 とほとんど同じモード
0.9 からの変更点
リクエスト時にリクエスト行が追加された
HTTP メソッド が追加された(e.g. GET)
https://www.w3.org/Protocols/HTTP/Methods.html
リクエスト時に HTTP バージョンが追加された(HTTP/1.0)
0.9 との違いを吸収するため
リクエストフィールド が追加された(e.g. Host、User-Agent、Accept)
https://www.w3.org/Protocols/HTTP/HTRQ_Headers.html
レスポンス
0.9 からの変更点
レスポンスの先頭にステータス行が追加された
HTTP バージョンと 3 桁のステータス(ステータスコード)が含まれるようになった
リクエストと同じ形式の フィールド(レスポンスフィールド)が追加された
フィールド(ヘッダ)
1992 年版の HTTP/0.9 では、電子メールと同じ形式の ヘッダ(フィールド)が導入された
電子メールと同じ形式
ヘッダ名: 値 の形式
warning.icon ヘッダ? フィールド?
Header は HTTP/1.1 で本体の後の末尾に付けられるようになった(HTTP Trailer)ため、最新の規格である RFC 9110 では位置とは独立した フィールド と名前が統一された
しかし、Go を始めとする多くのプログラミング言語ではフィールドを扱う API が未だに Header 型だったりする
また、RFC 内でも Content-Type のようにコンテンツよりも先に送られるものは ヘッダフィールド と呼んでいる
加えて、HTTP Trailer として使えるフィールドも、「極力ヘッダとして送ることが望ましい」と書かれていることもあるため、実質的にフィールドのほとんどは ヘッダフィールド である
Field は クラサバ 間で、追加情報や指示、命令などを記述する場
e.g.
主にクライントがサーバに送る Field
User-Agent
Referer
Authorization
主にサーバからクライアントに返すフィールド
Content-Type
Content-Encoding
Content-Length
Date
以前にあったフィールドの分類
以前の HTTP の仕様である RFC 2616 では、対象に応じて以下の 4 分類があったり、
1. 一般フィールド: リクエストとレスポンスの両方に適用
2. エンティティヘッダ: 送受信されるコンテンツに対して適用
3. リクエストフィールド: リクエストにのみ適用
4. レスポンスフィールド: レスポンスにのみ適用
通信経路での取り扱いによって、2 分類があったりした
1. エンドツーエンドフィールド: 最終受け取り者に渡される
2. ホップバイホッブフィールド: 通信経路に対する指示で、経路が変わったら削除される
メッセージフォーマットが バイナリ化 された HTTP/2 では、いくつかが非推奨になっている
が、現在は無くなっている
RFC で規定されていない非標準フィールド
以前は X- から始まるフィールドは各アプリケーションが自由に使っても良いとされていた
しかし、現在は RFC をなるべく発行して、X- 無しの名前を普及させる努力をしている
参考
https://zenn.dev/ys/articles/a58b02e3cbc2f839f7f1
参考
Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術
https://www.w3.org/Protocols/HTTP/AsImplemented.html
#HTTP