HTTP の変更点


#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参照モデル]]