この資料は「エンタープライズ開発入門」シリーズの一部です。以前の記事:
こんにちは!今日は、HTTP プロトコルと HTTPS プロトコルについて理解します。ただし、最初に 1 つの点を明確にしておきます。これは、OSI モデルのアプリケーション層におけるネットワーク上のデータ転送プロトコルについて話しているということです。覚えているとおり、以前の記事の 1 つで OSI モデルについて説明しました。覚えていない場合は、ここにあります。
HTTP プロトコルはテキストのみで構成されていることにすぐに注目してください。さて、私たちが最も興味があるのは、このテキストが配置されている構造です。各メッセージは次の 3 つの部分で構成されます。
データ転送プロトコルとは何ですか
これは、さまざまなサービスの開発者が単一の形式で情報を送信するための、一般的に受け入れられている契約に付けられた名前です。たとえば、Google Chrome を使用すると、Facebook と Twitter の両方から情報を取得できます。これは、開発者が標準の HTTP プロトコルを使用して情報を送信し、ブラウザがそれを処理できるためです。統一ルールは、サーバー側の開発者自身にとっても非常に便利です。情報を変換し、必要なプロトコルを使用して送信できるライブラリが多数あります。HTTP は元々、HTML ページを転送するためのプロトコルとして考案されました。これは長い間そうでしたが、現在ではプログラマーは文字列とメディア ファイルの両方をそれを介して転送することがよくあります。全体として、このプロトコルは多用途かつ柔軟であり、非常に使いやすいです。では、これを行う方法を考えてみましょう。
HTTPの構造
HTTP プロトコルはテキストのみで構成されていることにすぐに注目してください。さて、私たちが最も興味があるのは、このテキストが配置されている構造です。各メッセージは次の 3 つの部分で構成されます。
- 開始ライン - サービス データを定義します。
- ヘッダー - メッセージパラメータの説明。
- メッセージ本文 (Body) - メッセージ データ。見出しと空白行で区切る必要があります。
単純な HTTP リクエストはどのようなものですか
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
開始行には次の内容が含まれます。
- GET - リクエストメソッド。
- / — リクエストパス (パス);
- HTTP/1.1 - データ転送プロトコルのバージョン。
- ホスト— リクエストの宛先となるホスト。
- User-Agent は、リクエストを送信するクライアントです。
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
リクエストは javarush.com/user/create/json に送信されます。プロトコルのバージョンは HTTP/1.1 です。Accept はクライアントが受信を期待する応答形式を指定し、Content-Type はメッセージ本文が送信される形式を指定します。Content-Length - 本文の文字数。HTTP リクエストにはさまざまなヘッダーを含めることができます。詳細については、プロトコル仕様を参照してください。
HTTP 応答
リクエストを受信した後、サーバーはそれを処理し、クライアントに応答を送信します。HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
応答の開始行には、プロトコル バージョン (HTTP/1.1)、ステータス コード (200)、ステータスの説明 (OK) が含まれます。見出しはコンテンツの種類と長さを示します。応答の本文には、ブラウザが HTML ページに描画する HTML コードが含まれています。
応答ステータスコード
メッセージ本文とヘッダーを見ればすべてが明らかですが、ステータス コードについて少し述べておく価値があります。応答ステータス コードは常に 3 桁で、コードの最初の桁は応答のカテゴリを示します。- 1xx - 情報。リクエストは受信されており、サーバーは続行する準備ができています。
- 2xx - 成功しました。リクエストは受信され、理解され、処理されています。
- 3xx - リダイレクト。リクエストを処理するには、次の手順を実行する必要があります。
- 4xx - クライアント エラー。リクエストにエラーが含まれているか、プロトコルに準拠していません。
- 5xx - サーバーエラー。リクエストは正しく作成されましたが、サーバーはリクエストを処理できませんでした。
- 200 OK — リクエストは受信され、正常に処理されました。
- 201 Created — リクエストが受信されて正常に処理され、新しいリソースまたはそのインスタンスが作成されました。
- 301 Moved Permanently - 要求されたリソースは永久に移動されたため、それ以降の要求は新しいアドレスで行われる必要があります。
- 307 一時リダイレクト - リソースは一時的に移動されました。現時点では、自動リダイレクトを使用してアクセスできます。
- 403 禁止 - リクエストは明確ですが、承認が必要です。
- 404 Not Found - サーバーはこのアドレスでリソースを見つけられませんでした。
- 501 未実装 - サーバーは、このリクエストに応答する機能をサポートしていません。
- 505 HTTP バージョンがサポートされていません - サーバーは、指定されたバージョンの HTTP プロトコルをサポートしていません。
GO TO FULL VERSION