HTTP について知っておくべきこと

1、HTTP

1.1 はじめに

HTTPの概念

ハイパーテキスト転送プロトコル (HyperText Transfer Protocol) は、ブラウザとサーバーの間の関係を規定します。データ転送ルール

  • データ送信のルールとは、指定された形式で送信する必要がある要求データと応答データを指します。
  • 特定の形式を知りたい場合は、ブラウザを開き、F12 をクリックして開発者ツールを開き、Network をクリックして以下の図に示すように、特定のリクエストのリクエスト データとレスポンス データの特定の形式の内容:

ここに画像の説明を挿入します

注: ブラウザで上記のコンテンツが表示されない場合は、ブラウザの閲覧データをクリアする必要があります。 Chrome ブラウザでは Ctrl+Shift+Del を使用してクリアできます。

したがって、HTTP を学習するということは、主にリクエスト データとレスポンス データの特定の形式の内容を学習することを意味します。

HTTPプロトコルの特性

HTTP プロトコルには、次のような独自の特徴があります。

  • TCP プロトコルに基づく: 接続指向、安全

    TCP は、コネクション指向 (接続を確立する前に 3 ウェイ ハンドシェイクが必要) で、信頼性の高いバイト ストリーム ベースのトランスポート層通信プロトコルであり、データ送信の安全性が高くなります。

  • リクエスト-レスポンス モデルに基づく: 1 つのリクエストは 1 つのレスポンスに対応します

    リクエストとレスポンスは1対1で対応します

  • HTTP プロトコルはステートレス プロトコルです。トランザクション処理用のメモリがありません。それぞれのリクエストとレスポンスは独立しています

    ステートレスとは、クライアントがサーバーに HTTP リクエストを送信した後、サーバーがリクエストに応じたデータで応答することを意味し、応答後の情報は記録されません。この機能にはメリットもデメリットもあり、

    • 欠点: 複数のリクエスト間でデータを共有できない
    • 利点: 速い

    リクエスト間でデータを共有できないことによって引き起こされる次のような問題。

    • 京東ショッピング、加入购物车去购物车结算 は 2 つのリクエストです。
    • HTTP プロトコルのステートレスな性質により、ショッピング カートへの追加リクエストへの応答が完了した後、ショッピング カートに追加された商品は記録されません。
    • ショッピング カートをチェックアウトするリクエストを開始した後、ショッピング カートに追加された製品を取得できないため、このリクエストではデータが正しく表示されません。

    具体的に を使用すると、JD.com でデータが正常に表示されることがわかりました。その理由は、Java がすでにこの問題を考慮し、この問題を解決するために 会话技术(Cookie、Session) の使用を提案しているためです。

1.2 リクエストデータ形式

1.2.1 フォーマットの紹介:

リクエスト データは 3 つの部分に分かれています。リクエストラインリクエストヘッダーリクエストボディ

ここに画像の説明を挿入します

  • リクエスト ライン: HTTP リクエストのデータの最初の行リクエスト ラインには、GET [リクエスト メソッド] / [リクエスト URL パス] HTTP/1.1 [HTTP プロトコルとバージョン] の 3 つのコンテンツが含まれます。

    リクエスト メソッドは 7 つあり、最もよく使用されるのは GET と POST です。

  • リクエストヘッダー:2行目以降はkey:valueの形式になります

    リクエスト ヘッダーにはいくつかの属性が含まれます。一般的な HTTP リクエスト ヘッダーは次のとおりです。

    Host: 表示请求的主机名
    User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko;
    Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
    Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
    Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
    

    このデータは何に使用されますか?

    例: サーバーは、リクエスト ヘッダーの内容に基づいてクライアントに関する関連情報を取得できます。この情報を使用して、サーバーは次のようなさまざまなビジネス ニーズを処理できます。

    • 異なるブラウザーで HTML タグと CSS タグを解析した結果は一貫性がなくなるため、同じコードでもブラウザーが異なれば効果も異なります。
    • サーバーは、クライアントのリクエスト ヘッダー内のデータに基づいてクライアントのブラウザ タイプを取得し、異なるブラウザに応じて異なるコードを設定して、一貫した効果を実現できます。
    • これは、ブラウザの互換性の問題とよく呼ばれるものです
  • リクエストボディ: POST リクエストの最後の部分。リクエストパラメータが保存されます。

ここに画像の説明を挿入します

上図で示すように、赤線のボックスの内容がリクエストボディの内容であり、リクエストボディとリクエストヘッダーの間には空行が入っています。この時点で、ブラウザは POST リクエストを送信しています。GET が使用できないのはなぜですか? この時点で、GET リクエストと POST リクエストの違いを確認する必要があります。

  • GET リクエストのリクエスト パラメータはリクエスト ラインにあり、リクエスト ボディはありませんが、POST リクエストのリクエスト パラメータはリクエスト ボディにあります。
  • GET リクエストのリクエスト パラメータ サイズには制限がありますが、POST には制限がありません。

小结:

  1. リクエスト データには、リクエスト行、リクエスト ヘッダー、リクエスト本文の 3 つの部分が含まれます。

  2. POST リクエスト データはリクエスト本文にあり、GET リクエスト データはリクエスト行にあります

1.3 レスポンスデータフォーマット

1.3.1 フォーマットの紹介

応答データは 3 つの部分に分かれています。応答ライン応答ヘッダーレスポンスボディ

ここに画像の説明を挿入します

  • 応答行: 応答データの最初の行。応答行には、HTTP/1.1 [HTTP プロトコルとバージョン] 200 [応答ステータス コード] ok [ステータス コードの説明] の 3 つの内容が含まれます。

  • レスポンスヘッダ:2行目以降はkey:value形式となります。

    応答ヘッダーにはいくつかの属性が含まれます。一般的な HTTP 応答ヘッダーは次のとおりです。

    Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
    Content-Length:表示该响应内容的长度(字节数);
    Content-Encoding:表示该响应压缩算法,例如gzip;
    Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
    
  • 応答本文: 最後の部分。応答データを保存する

    上の図では、この部分が応答本文であり、応答ヘッダーから空行で区切られています。

1.3.2 レスポンスステータスコード

応答ステータス コードについては、まず主に 3 つのステータス コードを理解し、後で使用するときに残りをマスターします。

  • 200 ok クライアントリクエストは成功しました
  • 404 Not Found 要求されたリソースが存在しません
  • 500 Internal Server Error サーバー側で予期しないエラーが発生しました。

まとめ

  1. 応答データには、応答行、応答ヘッダー、応答本文の 3 つの部分が含まれます。

  2. 3 つの応答ステータス コード 200、404、および 500 の意味を理解します。配布は成功、アクセスされたリソースは存在しません、およびサービス エラーです。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/m0_69383623/article/details/128492461