#author("2022-10-07T21:03:03+09:00","default:k1rou","k1rou") #author("2022-10-08T13:58:27+09:00","default:k1rou","k1rou") *HTTP とは [#wb7410dc] **名称 [#y701ef18] -Hyper Text Transfer Protocol **概要 [#q77ad573] -アプリケーション層([[TCP/IPモデル]])の[[通信プロトコル]] -処理単位で通信を切断する[[ステートレス]]なプロトコル。 -[[ウェルノンポート番号]](TCP標準ポート番号):80 *HTTPのバージョン [#j6924f28] **HTTP1.0 [#x58119d1] -ヘッダ情報の扱いを追加。[[Cookie]]の登場。 **HTTP1.1 [#k29ced97] -RFC2616 -Keep-Alive、[[プロキシ]]を追加。 **HTTP/2 [#t3ab2d40] -「[[HTTP/2]]」参照 **HTTP/3 [#k284f17c] -「[[HTTP/3]]」参照 *HTTPメッセージ(リクエストメッセージ) [#xd2c07c0] **メッセージの構成要素 [#pb159521] -1行目:リクエストライン --メソッド --[[URI]] --HTTPバージョン ---ブラウザが対応しているバージョン -2行目以降:メッセージヘッダ(ヘッダフィールド) -空白行 -メッセージボディ **メソッド [#e16ea2cb] -GET --参照系 --サーバにデータの送信を要求する --WebブラウザからデータをWebサーバに渡す方法 ---URLの後ろにパラメタを付加する ---クエリストリング (URLパラメータ) ---送信可能なデータ:テキストのみ([[URLエンコード]]) ---最大文字数:255文字 ---環境変数:QUERY_STRING -POST --更新系 --サーバにデータを送信する --WebブラウザからデータをWebサーバに渡す方法 ---メッセージボディにデータをセットする ---送信可能なデータ:テキスト、バイナリ -HEAD --サーバにメッセージヘッダの送信を要求する(ボディ部は不要) -PUT --サーバにファイルを送信する -DELETE --サーバにデータの消去を要求する -CONNECT --サーバにトンネルの確立を要求する --プロキシサーバを使ったHTTPS通信で使われる -OPTIONS -TRACE **ヘッダフィールド [#g709e084] -ジェネラルヘッダ -リクエストヘッダ -レスポンスヘッダ -エンティティヘッダ ***リクエストヘッダ [#a9181123] -必須のヘッダ項目 --Host -送信元ホスト名([[FQDN]])と[[ポート番号]] --Host ---送信元ホスト名([[FQDN]])と[[ポート番号]] -条件付きGET --If-Modified-Since --If-None-Match -圧縮 --Accept-Encoding ***エンティティヘッダー [#i36afacb] -Referer --[[リファラ]] --リンク元ページのURL --これをチェックしてページ遷移が想定通りであるかを確認することができる --自サイトへの訪問者がどのリンクを辿って来たのかを確認できる --自サイトがどのサイト(リンク)から参照されているのかを分析できる -Content-Type --[[MIME]]メディアタイプ --例「application/xhtml+xml」 --「/」の左がタイプ、右がサブタイプ --タイプ http://www.iana.org/cgi-bin/mediatypes.pl --サブタイプ http://www.iana.org/assignments/media-types/ -言語タグ(Content-Language) *HTTPメッセージ(レスポンスメッセージ) [#q89fece0] **メッセージの構成要素 [#m8f09124] -1行目:リクエストライン --HTTPバージョン --ステータスコード --レスポンスフレーズ -2行目以降:メッセージヘッダ(ヘッダフィールド) -空白行 -メッセージボディ **ステータスコード [#z9aca55e] -番号帯 |コード |説明 |説明 |h |1xx |Informational|処理中 | |2xx |Success |成功 | |3xx |Redirection |リダイレクト | |4xx |Client Error |クライアントエラー | |5xx |Server Error |サーバエラー | -主なステータスコード |コード |説明 |説明 |h |100 |Continue |後続データを要求 | |101 |Switching Protocols |プロトコルの変更を要求 | |200 |OK |リクエストの処理が正常終了 | |201 |Created |ファイルの作成が正常終了 | |301 |Moved Permanently |ページが移動(恒久的) | |302 |Found (Moved Temporarily) |ページが移動(一時的) | |307 |Temporary Redirect |リダイレクト(一時的) | |401 |Unauthorized |認証が必要 | |403 |Forbidden |アクセスを禁止、リクエストを拒否 | |404 |Not Found |ページが存在しない | |451 |Unavailable For Legal Reasons |法的理由で利用できない | |500 |Internal Server Error |サーバ内部でエラー発生 | |503 |Service Unavailable |サービスが利用できない(一時的) | **ヘッダフィールド [#q7cd040f] ***レスポンスヘッダー [#ie2d793d] -圧縮 --Conten5-Encoding *HTTP認証 [#iec8de76] -[[Basic認証]] -[[Digest認証]] *キャッシュの制御 [#i9239956] -Pragma -Expires -Cache-Control *持続的接続 [#g9103073] -Keep-Aliveヘッダ *HTTPの拡張仕様 [#r6d02e39] -[[WebDAV]] *関連サイト [#l5afa05a] -Security headers quick reference - web.dev~ https://web.dev/security-headers/ -Deprecating the "X-" Prefix and Similar Constructs in Application Protocols (RFC6648)~ https://www.rfc-editor.org/rfc/rfc6648 *関連用語 [#v692e132] -[[IANA]]が管理 -[[Cookie]] -[[CGI]] -[[hidden]] -[[HTTPS]] -[[HTTPヘッダインジェクション]] -[[冪等性]] -[[X-Forwarded-For]] -[[OSI参照モデル]]