HTTPプロトコル
HTTPの概要
HTTPはHypertext Transfer Protocolの略で、中国語名はHypertext Transfer Protocolです。これは、クライアントとサーバ間のリクエストとレスポンスの形式と相互作用規則を規定します。
HTTPは通常 TCP 上で動作します。クライアントはまずサーバにHTTPリクエストを送信し、サーバは処理後にHTTPレスポンスを返します。
HTTPの主な特徴
ステータスなし
HTTPプロトコル自体は、以前のリクエストからのビジネスステータスを自動的に記憶しません。サーバーは、Cookie、セッション、トークン、データベースなどのメカニズムを通じてログインステータスとビジネスデータを維持できます。
リクエストとレスポンスのパターン
HTTPインタラクションには通常、リクエストとレスポンスが含まれます。HTTP/1.1はデフォルトで永続的な接続をサポートしているため、単に“リクエストの終了後にTCP 接続を切断する”と解釈できません。接続が多重化されるかどうかは、プロトコルバージョン、要求ヘッダ、サーバ構成、ネットワーク環境にも依存します。
HTTPリクエストメッセージ
HTTPリクエストメッセージは通常、以下の要素から構成されます。
-
LINEのリクエスト。
-
ヘッドを参照。
-
空の空。
-
オプションのリクエスト体。
リクエスト·ライン
要求ラインには、要求メソッド、要求ターゲット、およびHTTPバージョンが含まれます。次に例を示します。
GET /users?id=10 HTTP/1.1
クエリパラメータは要求ターゲットにあり、要求ヘッダーに属しません。
共通のリクエスト方法
GET
通常は資源の取得に使用されます。クエリパラメータはURLの後ろに書かれることが多いため、アドレスバー、ブラウザ履歴、サーバーログなどに簡単に表示されます。
GETはPOSTよりも自然に“安全でない”わけではありません。安全性はHTTPSの使用、機密パラメータの公開、サーバー側の権限検証などに依存します。URLの長さにはHTTPで統一された固定上限はありませんが、ブラウザ、サーバー、プロキシはそれぞれ制限を設定できます。
POST
通常、サーバにデータを送信したり、処理操作をトリガーしたりするために使用されます。フォームmethod="post"を使用する場合、フォームデータは通常リクエスト本体に配置されます。
HEAD
GETに似ていますが、サーバーはレスポンスヘッダーのみを返し、レスポンスボディは返さず、リソースメタデータを取得するためによく使用されます。
PUT
指定されたリソースを作成または全体的に置換するために使用され、RESTfulインタフェースでは一般的です。
DELETE
通常、指定したリソースを削除するために使用します。サーバは引き続き認証、権限チェック、およびビジネス検証を行う必要があります。
一般リクエストヘッダー
| リクエストヘッド | 作用 |
|---|---|
Accept | クライアントが受信できる応答コンテンツタイプの宣言 |
Accept-Language | クライアントの好みを宣言する言語 |
Content-Type | 要求本体のデータ型の宣言 |
クッキー | 適格なCookieをサーバーに送信する |
一般的なリクエストの種類
フォームのエンコード
Content-Type: application/x-www-form-urlencoded
リクエスト本体の例:
username=tom&password=123
ファイルのアップロード
Content-Type: multipart/form-data
このフォーマットは、共通のフィールドとファイルコンテンツを同じリクエストで送信することができ、実際のリクエストヘッダーにはセクションを分離するためのboundaryが含まれます。
XML
Content-Type: application/xml
JSON
Content-Type: application/json
JSONはオブジェクトの属性名と文字列値を二重引用符で表します。
{
"username": "tom",
"password": "123",
"name": "tom"
}
{
"name": "财务部",
"id": 5001,
"employees": [
{
"name": "tom",
"age": 20
},
{
"name": "jack",
"age": 23
}
]
}HTTPレスポンス·メッセージ
HTTPレスポンスメッセージは通常以下の要素から構成されます。
-
ステータス·ライン。
-
頭に応答する。
-
空の空。
-
任意の応答体。
Status Lineの例:
HTTP/1.1 200 OK
HTTPステータスコード
ステータスコードは3 桁で構成され、最初の数字はレスポンスクラスを表します。
| ステータスコード | 名称 | 意味 |
|---|---|---|
| 『 200 』 | OKです。 | リクエスト成功。 |
| 『 400 』 | Bad Requestより | 要求形式またはパラメータがサーバ要件に適合していません |
| 『 40 1 』 | authorized | 有効な認証は完了していません |
| 『 40 3 』 | Forbiddenの | サーバはリクエストを理解するが、パーミッション不足のために実行を拒否する。 |
| 『 40 4 』 | 見つからなかった | 要求されたリソースが存在しないか、アドレスが正しくない |
| 『 40 5 』 | 方法は許可しない | リソースは現在の要求メソッドをサポートしていません |
| 『 500 』 | 内部サーバエラー | サーバ内部処理エラーが発生しました |
| 502さん | バッド·ゲートウェイ | ゲートウェイまたはプロキシがアップストリームサーバから無効な応答を受信 |
4xxは通常、クライアントの要求に問題があることを示し、5xxは通常、サーバが要求を処理する際に問題が発生したことを示します。
一般的な応答ヘッダ
| 応答ヘッド | 作用 |
|---|---|
Content-Type | レスポンスボディのデータ型と文字エンコーディングの宣言 |
Content- | レスポンスボディ長の宣言 |
Location | リダイレクト、新しいリソースアドレスの指定によく使用されます。 |
Set-Cookie | ブラウザに規則に従ってCookieを保存するよう求める |
リクエスト内のCookieはCookieリクエストヘッダーを使用し、サーバーはCookieを設定するときにSet-Cookieレスポンスヘッダーを使用します。
HTTPSプロトコル
HTTPS 概要
HTTPSは、TLSセキュアチャネル内でHTTPを送信することと理解できます。SSLはTLSの歴史的な前身であり、関連する証明書はまだSSL 証明書と呼ばれています。
TLSには以下のセキュリティ機能がある。
-
**機密性:送信データを暗号化し、盗聴のリスクを低減します。
-
完全性:送信内容が改ざんされていないかを検出する。
-
認証:デジタル証明書を介してサーバーの身元を検証します。特定のシナリオでは、クライアントの身元も検証できます。
HTTPSとHTTPの違い
| の比較 | HTTP | HTTPS |
|---|---|---|
| デフォルトポート | 『 80 』 | #44 3さん |
| トランスポート保護 | 暗号化されない | TLSを使用した暗号化と整合性の検証 |
| アイデンティティ認証 | プロトコル自体は証明書認証を提供しない | 通常、デジタル书によるサーバIDの |
| アドレスプレフィックス | http// | https// |
HTTPSを使用することは、ビジネスシステムの絶対的なセキュリティと同等ではなく、サーバーは認証、権限制御、入力チェック、機密データストレージを正しく処理する必要があります。
IntelliJ IDEAでTomcatを設定する
次の手順は、従来のMaven Webプロジェクトに適用されます。IntelliJ IDEAのバージョンによってメニュー名が若干異なります。
ステップ1:Maven Webプロジェクトを作成する
Mavenプロジェクトを作成し、Webリソースディレクトリとサーブレット関連の依存関係を準備します。
ステップ2 Web Facetの設定
Project Structureを開き、FacetsでWeb 構成を追加または確認してから、設定を適用します。
手順 3 Tomcat 実行構成の追加
“実行”メニューで“Edit Configurations”を開き、Tomcat Serverの下にローカル構成を追加します。

ステップ4:プロジェクトアーティファクトのデプロイ
Tomcat 実行構成のDeploymentページに現在のWebプロジェクトのArtifactを追加し、アプリケーションコンテキストパスを確認します。


ステップ5:プロジェクトを開始してアクセスする
Tomcatを起動し、コンソールに配備エラーがないことを確認してから、ブラウザで次のようにアクセスします。
http://localhost:8080/pjt0721/index.html
ここで、pjt0721はアプリケーションコンテキストパス、index.htmlはアクセスするリソースです。実際のアドレスは、展開構成と一致している必要があります。
気に入ったならばコメントを残してくださいね~