HTTPヘッダーとは?

IT用語

はじめに

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

私も何回か出くわしたことがありましたが、完璧に理解はできていませんでした。

今回はこのHTTPヘッダーについて見ていこうと思います。

HTTPヘッダーとは

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

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

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

リクエストヘッダー

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

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

Host

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

例:’Host:www.example.com’
 

User-Agent

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

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

Accept

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

例:’Accept : text/html’  ‘Accept : application/json’
 

Authorization

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

例:’Authorization : Basic dXNlcjpwYXNz’
 

Cookie

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

Cookieについての概要はこちら

レスポンスヘッダー

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

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

1.Content-Type

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

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

2.Content-Length

レスポンスボディのバイト数を示します。

例:’Content-Length : 348′
 

Set-Cookie

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

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

Cache-Control

キャッシュの制御方法を指定します。

例:’Cache-Control : no-cache’  ‘Cache-Control : max-age=3600’
 

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のバージョン。

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

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

Cookieの具体的な使い方について詳しく知りたい方はこちら

コメント

  1. […] HTTPを支える【HTTPヘッダー】 […]

タイトルとURLをコピーしました