#author("2018-08-22T15:03:15+00:00","default:inoue.ko","inoue.ko") #author("2023-11-02T14:17:30+09:00;2019-07-05T20:51:14+09:00","default:inoue.ko","inoue.ko") *HTTP HyperText Transfer Protocol ~ World Wide Webにおいて、[[Webブラウザ>Browser]]とWebサーバとの間での転送に用いられるプロトコルで、ブラウザからサーバへ送られる Get、Put コマンドに対し、サーバーが結果を返す際の規約を定めたものです。ティム・バーナーズ・リー氏が1990年に開発。ブラウザのアドレスバーに表記される''http:// ・・''がそれです。HTMLの送信のみならず、静止画、動画、音声、PDFなど様々なデータの転送にも使われています。 -RFC2616:Hypertext Transfer Protocol HTTP/1.1 // RFC 7230 - RFC 7235 http://tools.ietf.org/html/rfc2616 -RFC 7540:Hypertext Transfer Protocol Version 2 -- HTTP/2 https://tools.ietf.org/html/rfc7540 ~ **HTTPリクエスト HTTPリクエストは大きく以下の3つに分けられます。 -リクエスト行 -メッセージヘッダー -メッセージボディ ~ ***リクエスト行 リクエスト行には、Webサーバに依頼する処理内容が書かれます。 最も一般的なのは、ページデータ(HTML)の送信要求です。 GET /index.html HTTP/1.1 ~ ***リクエストメソッド -''GET'':データの送信要求 -HEAD:メッセージヘッダの内容を問い合わせ -POST:サーバにデータを送信 -PUT:ファイルのアップロード -DELETE:データ削除の要求 -CONNECT:トンネル確立を要求 -OPTIONS:サポートするオプションの問い合わせ -TRACE:経由するサーバに応答要求 ~ ***リクエストヘッダー リクエストに関わる各種の情報が書かれています。 Host: www.example.com Connection: keep-alive User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) ・・・ Accept: */* : ~ ***リクエストボディー 略:GETメソッドでは、ボディーは存在しません。 ~ ~ **HTTPレスポンス HTTPレスポンスは大きく以下の3つに分けられます。 -ステータス行 -メッセージヘッダー -メッセージボディ ~ ***ステータス行 ステータス行にはWebサーバの処理結果(ステータスコード)がセットされます。ステータスコードは3桁の数字で、以下のように回答されます。 HTTP/1.1 200 OK ~ ***ステータスコード -100:データに続きがあるため再要求 -101:指定プロトコルで再接続を要求 -200:リクエスト処理成功 -201:ファイル作成成功 -301:データが別の場所に移動 -302:一時的にデータは別の場所に移動 -''403'':データへのアクセス不可 -''404'':データが見つからない -500:サーバ内部のエラー -503:一時的にサーバ処理不可 ~ ***メッセージヘッダー (書きかけです) ~ //***メッセージヘッダー //(書きかけです) //~ ***メッセージボディー (書きかけです) ~ ~ //***メッセージボディー //(書きかけです) //~ //~ **HTTP/2 (書きかけです) ~ ~ //**HTTPS //(書きかけです) //~ //~ **HTTPS (書きかけです) ~ ~ ~ ~