HTTPの詳細
リクエストとレスポンス
https://scrapbox.io/files/67505cbb753589e360c76208.png
スキーム:これは、HTTP、HTTPS、FTP(ファイル転送プロトコル)などのリソースにアクセスするために使用するプロトコルを指示します。
ユーザー:一部のサービスでは、ログインに認証が必要です。ログインするには、URLにユーザー名とパスワードを入力することができます。
ホスト:アクセスしたいサーバーのドメイン名またはIPアドレス。
ポート:接続するポート、通常はHTTPの場合は80、HTTPSの場合は443ですが、これは1 - 65535の間の任意のポートでホストできます。
パス:アクセスしようとしているリソースのファイル名または場所。
クエリ文字列:要求されたパスに送信できる追加の情報ビット。例えば、/blog?id=1は、ブログパスに、IDが1のブログ記事を受け取りたいことを伝えます。
フラグメント:これは、要求された実際のページ上の場所への参照です。これは、コンテンツが長いページに一般的に使用され、ページの特定の部分が直接リンクされているため、ユーザーがページにアクセスするとすぐに表示できます。
リクエストをする
GET / HTTP/1.1」という行だけで、ウェブサーバーにリクエストできる
でもより豊かなウェブ体験を得るには、他のデータも送信する必要がある
ヘッダーと呼ばれるもので送信する
こういうやつ
https://scrapbox.io/files/675064bf87f259715184eb84.png
GET / HTTP/1.1
GETメソッド(HTTPメソッドタスクの詳細)を送信し、/でホームページを要求し、HTTPプロトコルバージョン1.1を使用していることをWebサーバーに伝える
Host: tryhackme.com
ウェブサイトtryhackme.comが欲しいとウェブサーバーに伝えます
User-Agent: Mozilla/5.0 Firefox/87.0
Firefox バージョン 87 ブラウザを使用していることを Web サーバーに伝え
HTTPリクエストは常に空白行で終わり、Webサーバーにリクエストが終了したことを通知します。
レスポンス
https://scrapbox.io/files/675064d55804ded4ce5e56f0.png
5行目:Content-Lengthは、クライアントに応答の長さを伝えます。これにより、データが欠落していないことを確認できます。
HTTPメソッド
GET
Webサーバーから情報を取得する
POST
Webサーバーにデータを送信し、新しいレコードを作成するために使用
PUT
情報を更新するためにWebサーバーにデータを送信するために使用される
DELETE
Webサーバーから情報/レコードを削除するために使用される
ヘッダーとは
リクエストを行うときにWebサーバーに送信できる追加のデータビット
HTTPリクエストでのヘッダー
厳密には必要ないが、Webサイトを正しく表示するためには不可欠
共通リクエストヘッダー
クライアント(通常はブラウザ)からサーバーに送信されるヘッダー
ホスト
一部のWebサーバーは複数のWebサイトをホストしており、ホストヘッダーを使って必要なWebサイトを指定
それ以外の場合、サーバーのデフォルトWebサイトが受け取られる
ユーザーエージェント
ブラウザのソフトウェアとバージョン番号
サーバーはこれを使って、ブラウザに適切にWebサイトをフォーマットする
一部のHTML、JavaScript、CSS要素は特定のブラウザ専用
コンテンツの長さ
フォームなどでWebサーバーにデータを送信する際、予想されるデータの長さを伝える
サーバーはデータが欠落していないか確認できる
Accept-Encoding
ブラウザがサポートする圧縮方法の種類をWebサーバーに伝える
データを圧縮して送信し、転送を効率化する
クッキー
ユーザー情報を記憶するためにサーバーに送信されるデータ
一般的な応答ヘッダー
サーバーがクライアントに返すヘッダー
Set-Cookie
リクエストごとにWebサーバーから返送され、保存する情報
キャッシュ制御
応答のコンテンツをブラウザのキャッシュに保存する期間を設定
再度要求するまでの期間を指定
コンテンツタイプ
HTML、CSS、JavaScript、画像、PDF、ビデオなど、返されるデータのタイプを伝える
ブラウザはコンテンツタイプを使ってデータの処理方法を知る
コンテンツエンコーディング
データをインターネット経由で送信する際に圧縮するために使用された方法
クッキー
クッキーは、ウェブサーバーから「Set-Cookie」ヘッダーを受け取ったときに保存される
HTTPがステートレス(以前のリクエストを追跡しない)であるため、クッキーを利用してwebサーバーに自分が誰なのか、webサイトの個人設定、webサイトの利用歴を読み込む
最も一般的にはウェブサイトの認証に使用される
クッキーの値は、通常、パスワードを確認できる明確なテキスト文字列ではなく、トークン(人間が推測できない一意の秘密コード)