見出し画像

HTTPを支える【HTTPヘッダー】

はじめに

HTTPに触れていると、HTTPヘッダーなるものが登場した人もいると思います。

私も何回も出くわしたことがありましたが、ちゃんと理解はしてこなかったので、今回はこのHTTPヘッダーについて見ていこうと思います。


HTTPヘッダーとは

まずHTTP(HyperText Transfer Protocol)は、Web上でデータをやり取りするためのプロトコルです。

そして、HTTPヘッダーはこのデータのやり取りの関する情報を含む部分で、サーバーとクライアント間の通信を円滑にするためのメタデータを提供します。

HTTPヘッダーはリクエストヘッダーとレスポンスヘッダーに分かれています。


リクエストヘッダー

リクエストヘッダーは、クライアント(通常はwebブラウザ)からサーバーに送信されるリクエストに付加される情報です。

以下のようなものがあります。

1.Host
リクエストがどのサーバーに送信されるべきかを指定します。

例:'Host:www.example.com'

2.User-Agent
リクエストを送信しているクライアントの情報(ブラウザやOSなと)を示します。

例:'User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64)'

3.Accept
クライアントが受け入れることができるメディアタイプ(MIMEタイプ)を示します。
HTML、画像、JSONなど様々な形式を受け入れることができます。

例:'Accept : text/html'  'Accept : application/json'

4.Authorization
認証情報を送信するために使用されます。

例:'Authorization : Basic dXNlcjpwYXNz'

5.Cookie
クライアントがサーバーから受け取ったクッキー情報を再送信するために使用されます。


レスポンスヘッダー

レスポンスヘッダーは、サーバーからクライアントに送信されるレスポンスに付加される情報です。

以下のようなものがあります。

1.Content-Type
レスポンスするコンテンツのメディアタイプを示します。
これによりクライアントは、データの正しい処理方法を理解できます。

例:'Content-Type : text/html; charset=UTF-8'

2.Content-Length
レスポンスボディのバイト数を示します。

例:'Content-Length : 348'

3.Set-Cookie
サーバーがクライアントにクッキーを設定するために使用します。
セッション管理のために使用されることが一般的です。

例:'Set-Cookie : sessionId = abc123; Path=/; HttpOnly'

4.Cache-Control
キャッシュの制御方法を指定します。

例:'Cache-Control : no-cache'  'Cache-Control : max-age=3600'

5.Server
サーバーのソフトウェア情報を示します。

例:'Server : Apache/2.4.41(Ubuntu)'  


具体例

HTTPリクエストの例

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html

このリクエストは、クライアントが'www.example.com'サーバーの'index.html'ページを取得しようとしていることを示しています。

・GET:リクエストメソッドで、指定されたリソースを取得することを示します。

・/index/html:取得しようとしているリソースのパス。

・HTTP/1.1:使用しているHTTPのバージョン。

・Hosu:リクエストが送信されるサーバーのホスト名。

・User-Agent:リクエストを送信しているクライアント情報。

・Accept:クライアントが受け入れることができるメディアタイプ。

HTTPレスポンスの例

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 138
Server: Apache/2.4.41 (Ubuntu)
Set-Cookie: sessionId=abc123; Path=/; HttpOnly

<html>
<head><title>Example</title></head>
<body><p>This is an example page.</p></body>
</html>

このレスポンスは、サーバーが'index.html'ページを正常に提供したことを示しています。

・HTTP/1.1 200 OK:ステータスラインで、HTTPのバージョンとステータスコード200(成功)を示す。

・Content-Type:レスポンスのコンテンツタイプ(HTML)と文字エンコーディング(UTF-8)を示す。

・Content-Length:レスポンスボディの長さをバイト単位で示す。

・Server:サーバーのソフトウェア情報を示す。

・Set-Cookie:クライアントに送信するクッキー情報を設定。


HTTPヘッダーのセキュリティ

HTTPヘッダーはセキュリティにも重要な役割を果たしています。

'Strict-Transport-Security'ヘッダーは、ブラウザに対して常にHTTPSで接続するように指示します。

また、'X-Content-Type-Options: nosniff'はブラウザがレスポンスのContent-Typeヘッダーを信用し、不正なコンテンツの実行を防ぐために使用されます。


まとめ

以上のようにHTTPヘッダーは、HTTPを用いたWeb通信において重要な役割を持ち、情報を提供します。

HTTPヘッダーを理解し、自身で設定することができれば、自身のWebサービスの機能を充実させたり、セキュリティを高めることができます。

Cookieの設定なんかは特に自分も今後使用していくと思うので、実践を通して、更なる理解に繋げていきたいと思います。

更新の励みになりますので、読んでみて少しでもよかったら、
スキ、コメント、サポート宜しくお願いいたします!!

この記事が気に入ったらサポートをしてみませんか?