net_HTTPとは

02HTTPとは

HTTP(HyperText Transfer Protocol)は、Webブラウザとサーバー間で情報を交換する通信にて使用されるプロトコルです。HTTPを利用することで、Webブラウザ(クライアント)からサーバーへWebページに関するリクエストを送ることができます。サーバーがこのリクエストを受け取ると、レスポンスとしてWebページをブラウザに返送します。 ここでの「クライアント」とは、サービスやデータを要求するユーザー側のデバイスを指します。一般的には、私たちが使用するコンピューターやスマートフォン上のWebブラウザがこの役割を果たします。一方「サーバー」とは、これらの要求に応答してデータやサービスを提供する側のシステムです。サーバーはインターネット上の特定の場所に存在し、Webページや画像、その他のコンテンツを保持し、クライアントのリクエストに応じてこれらのコンテンツを送信します。 次にHTTP通信におけるリクエストとレスポンスについて説明します。

リクエスト

リクエストは「メソッド・ヘッダー・ボディ」の3要素から構成されています.

メソッドとは

まずメソッドとは、サーバーに対して特定のアクションを要求するための手段です。最も一般的なメソッドはGETとPOSTですが、PUT、DELETE、PATCHなどの他のメソッドもあります。 これらHTTPメソッドを、リクエストラインと呼ばれる領域に指定します. 普段インターネットを使用している時に、これらメソッドを意識することはないですが、プログラムを作る上では必須の知識になります。サーバーに要求する内容によって、使用するメソッドを変える必要があることを覚えておきましょう。HTTPメソッドについてもう少し詳しく説明をしましょう.

GETメソッド

GETメソッドは、主にサーバーから情報を取得するために使用されます。例えば、WebブラウザがWebページを表示する際に、GETメソッドを使ったリクエストが行われます。GETメソッドの特性として、データはURLの一部に載せる形で送信されるため、送信できるデータ量には制限があります。またGETメソッドを使ったリクエストは、Webブラウザによるキャッシュ可能であり、同じリクエストの応答時間の短縮が見込めます.他にもブックマークやURLの共有が容易ですが、サーバにURLがログとして残るため機密性の高い情報を送信するのには適していません。では、実際の処理の流れに沿って説明します。

例えば、ニュースサイトで特定の記事を読みたい場合、その記事のURLにはその記事を一意に識別する情報が一部含まれています(例:https://example.com/news?article_id=123 ?article_id=123の部分)。ユーザーがこのURLにアクセスすると、サーバーは**article_idの値に基づいて対応するニュース記事を返します。このとき、Webブラウザはそのページをキャッシュに保存するため、次に同じURLにアクセスするときには、サーバーに再びリクエストを送ることなく、すぐにWebブラウザ上で記事を表示できます。これによりロード時間が短縮され、ユーザは効率的なにWebページを閲覧できます。 一方で、クレジットカード情報や個人識別情報などの機密データの場合はどうなるでしょうか.(例:https://example.com/news?card_number=1111222233334444?security_number=321 ?card_number=1111222233334444の部分**).このままではURLにカード番号とセキュリティ番号が露出してしまい、サーバーのログに記録されてしまいます。これにより、悪意のある第三者によるデータの漏洩リスクが高まります。そのため、機密性の高い情報の送信にはPOSTメソッドの使用が推奨されます。

POSTメソッド

POSTメソッドは、サーバーにデータを送信し、新しいリソースを作成したり既存のリソースを更新したりするために使用されます。このメソッドは、フォームの送信やファイルのアップロードによく利用されます。POSTメソッドでは、データはHTTPリクエストのボディ部分に含まれており、大量のデータを送信できるため機密情報の送信にも適しています。POSTリクエストは通常キャッシュされず、ブックマークや再送信が困難です。

以下にGETメソッドとPOSTメソッドの違いについてまとめました.

特性GETPOST
データの送信方法URLにデータを含める (クエリストリング)リクエストボディにデータを含める
データ量限られたデータ量しか送信できない大量のデータを安全に送信できる
キャッシュキャッシュ可能で、履歴に残る通常はキャッシュされず、履歴にも残りにくい
用途データの取得に適しているデータの作成や更新、機密情報の送信に適している
安全性機密情報の送信には不適切機密情報の送信に適している

ヘッダーとは

次にヘッダーについてです.ヘッダーは、リクエストやレスポンスに関連するメタデータを含みます。これには、送受信されるデータの種類、データの長さ、使用される言語、認証情報、キャッシュポリシーなど、様々な指示情報が含まれます。たとえば、Content-Type ヘッダーはリクエストやレスポンスのボディに含まれるデータの形式を示し、Accept ヘッダーはクライアントが理解できるコンテンツタイプをサーバーに知らせます。これにより、サーバーとクライアントはデータの形式について事前に合意し、データ交換をスムーズに行うことができます。

ボディ

最後にボディについてです.ボディは、具体的なデータ自体を含みます。リクエストの場合は、サーバーへ送信するデータが含まれることが多く、POSTやPUTメソッドを使った通信ではフォームのデータ、ファイル、JSONなどがこの部分に配置されます.

レスポンス

レスポンスは「ステータスコード・ヘッダー・ボディ」の3要素から構成されています

ヘッダーには、リクエストと同様にレスポンスに関連するメタデータが含まれます。これには、コンテンツのタイプ、キャッシュのポリシー、セキュリティ関連の情報などが含まれます。

ボディには、サーバーがクライアントに返す具体的なコンテンツが含まれています。これには、ウェブページのHTMLコード、画像、アプリケーションデータなどが該当します。この内容は、クライアントが要求した情報やサービスの性質によって異なります。

ステータスコード

まずステータスコードは、サーバに対してWebブラウザ(クライアント)からリクエスト送信されたときに、サーバーからブラウザに返される「応答の状態」を表す数字のことです。この数字によって、リクエストが成功したのか、問題があったのか、それとも別のアクションが必要なのかがわかります。ステータスコードは、ステータスラインと呼ばれる領域に格納されています. ステータスコードをいくつかのグループに分けた表を以下にまとめました.

ステータスコードの範囲状態説明
200-299成功(Success)クライアントからのリクエストが成功し、求めていた結果がブラウザに返された際のステータス
300-399リダイレクト(Redirection)指定したURL とは別のURLにアクセスしたことを示すステータス
400-499クライアントエラー(Client Error)指定したURLが見つからなかったり、Webページのアクセス権限がなかったりすることを示すステータス
500-599サーバーエラー(Server Error)サーバ側に問題があるため、リクエストを処理できないことを示すステータス

以下に、GETメソッドおよびPOSTメソッドを使用したHTTPリクエストとレスポンスの流れを示した図を用意しました。また今節で触れた、「メソッド、ヘッダー、ボディ、リクエストライン、ステータスライン」についても、それぞれの処理工程でどのような役割があるのかをまとめていますので、以下の図を見ながらそれぞれの役割を整理してみてください。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です