ホームページ  >  記事  >  ウェブフロントエンド  >  HTTPプロトコルの詳細な分析

HTTPプロトコルの詳細な分析

一个新手
一个新手オリジナル
2017-09-21 10:36:402310ブラウズ

HTTPプロトコルの詳細な分析

http はじめにhttp httpのリクエスト部分 リクエストの基本構造リクエストラインの詳細説明 HTTPリクエストヘッダーHTTP 詳細な返信http レスポンスの基本構造ステータスラインhttp レスポンスメッセージヘッダーの詳細説明Expires、Pragma、Cache-Control キャッシュしないように設定しますExpires、Pragma、Cache-Control 設定 キャッシュ時間の指定HTTP リクエストの詳細—一般情報ヘッダ

httpの概要

  1. httpプロトコルはtcp/ipプロトコルに基づいています

  2. httpプロトコル呼び出しスーパーテキスト転送プロトコル( HTTP、ハイパーテキスト転送プロトコル)

  3. http プロトコル バージョン 1.0 1.1 2.0

  4. http 1 .0は短い接続になり、http 1.1は長い接続と呼ばれます

    いわゆる長い接続と短い接続は、1.1 30 秒という長い接続時間を指します。短い接続は、データを送信した後すぐに切断されます

  5. HTTP は、最も基本的な、サーバーと対話するためのさまざまな方法を定義します。メソッドにはGET、POST、PUT、DELETEの4種類があります。 URL の完全な名前はリソース記述子です。ネットワーク上のリソースを記述するために使用される URL アドレスと、HTTP の GET、POST、PUT、および DELETE は、このリソースの確認と変更に対応します。 4 つの操作を追加および削除します。この時点で、GET は一般にリソース情報の取得/クエリに使用され、POST は一般にリソース情報の更新に使用されることを一般的に理解する必要があります。

httpリクエストの基本構造

リクエストライン

メッセージヘッダ

空白行

コンテンツ

リクエストライン

リクエストメソッドは: post、get、options、delete、trace、put

一般的に使用されるものは次のとおりです: post、get

投稿して取得:

GET は URL または Cookie を使用してパラメータを渡します。そしてPOSTでBODYにデータを入れます。

GET URL には長さ制限がありますが、POST データは非常に大きくなる可能性があります。

POST は、データがアドレス バーに表示されないため、GET よりも安全です。

HTTPリクエストヘッダーの詳しい説明
  1. Accept: ブラウザーで受け入れられるMIMEタイプを受け入れることができるファイルタイプをサーバーに伝えます

  2. Accept-Charset: ブラウザーで受け入れられるMIMEタイプブラウザの文字セット エンコーディング

  3. Accept-Encoding: gzip、compress などの特定の形式の圧縮データを受け入れることができます。ブラウザがデコードできるデータのエンコード方式

  4. Accept-Langage: ブラウザがサポートする言語

  5. Host: 探しているホストを示します

  6. If-Wodified-Since: リクエストされたファイルの時刻を含むローカル キャッシュ内にリクエストされるファイルがあるかどうかをサーバーに伝えます // サーバーはこのリクエストを受け取り、時間を比較してファイルがリクエストされたファイルであるかどうかを判断しますブラウザが変更された場合、変更が発生すると新しいファイルがブラウザに送信されます。データが変更されずに再送信されることはありません。 //注: 要求されたコンテンツが指定された日付以降に変更された場合にのみ返されます。それ以外の場合は、304"Not が返されます。 Modified" 応答。

  7. リファラー: 私の出身地をサーバーに伝えます。このメッセージ ヘッダーは、ホットリンクを防ぐためによく使用されます。ホットリンクを防ぐ方法についての個人的な理解:

    ホット リンク: ホット リンクとは、サービス プロバイダー自体がサービスを提供しないコンテンツを指します。技術的手段を使用して、他の有益なエンド ユーザー インターフェイス (広告など) をバイパスし、他のサービス プロバイダーのサービスを自社の Web サイトでエンド ユーザーに直接提供します。エンド ユーザーの閲覧率やクリックスルー率を騙すコンテンツ。受益者はリソースを提供しないか、ほとんどリソースを提供しませんが、実際のサービス プロバイダーは接続をクリックした時点で利益を得ることができません。ファイルの場所 Referer.startWith("internal path");

    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{        // 防止乱码      response.setContentType("text/html;charset=utf-8");        // 获取输出流      PrintWriter out = response.getWriter();        // 获取用户浏览器 Referer      String referer = request.getHeader("Referer");      if(referer == null || referer.startsWith("http://localhost:8080/本地内部用户web应用路径")){          response.sendRedirect("其他非真正资源网页");          return;      }else{                }      // 内部资源文件        。。。。。。。。。。。  }

    ユーザーエージェント: サーバー、ブラウザーの Cookie に通知します。重要なリクエストヘッダー情報

  8. Connection: サーブレットがここの値を「Keep-Alive」と認識するか、またはリクエストが HTTP 1.1 を使用していると認識するかどうかを示します (HTTP 1.1 は永続的な接続を実行します)。デフォルトで接続されます)、ページに複数の要素(アプレット、画像など)が含まれている場合、永続的な接続を利用してダウンロード時間を大幅に短縮できます。これを実現するには、サーブレットがコンテンツを送信する必要があります。長さヘッダー、最も単純な実装方法は次のとおりです。最初にコンテンツを書き込みます。 ByteArrayOutputStream を呼び出し、実際に内容を書き出す前にそのサイズを計算します。

  9. 日付: ブラウザが http リクエストを送信した時刻。

  10. Content-Length: リクエストメッセージ本文の長さを示します。

  11. UA-Pixels、UA-Color、UA-OS、UA-CPU: 一部のバージョンの IE ブラウザーによって送信される非標準のリクエスト ヘッダーで、画面サイズ、色深度、オペレーティング システム、CPU タイプを示します。

HTTPレスポンスの詳細

httpレスポンスの基本構造

ステータス行

複数のメッセージヘッダ

エンティティコンテンツ

ステータス行

形式: http バージョン番号ステータスコード理由の説明719f572dc95af346278bdd6251cfc5d3

例: HTTP /1.1 200 OK

ステータスコードは、サーバーによるリクエストの処理結果を示すために使用されます。これは 3 次元の 10 進数です。応答ステータスコードは 5 つのカテゴリに分類されます。

ステータスコード の意味
100~199 リクエストが正常に受信されたことを示し、クライアントは次のリクエストの送信を続ける必要があります。処理プロセス全体を完了するためのリクエスト
200~299 は、リクエストが正常に受信され、処理プロセス全体が完了したことを示します。 一般的に使用される 200
300~399 リクエストを完了するには、クライアントはリクエストをさらに絞り込む必要があります。たとえば、リクエストされたリソースは、一般的に使用される新しいアドレスに移動されました。 302、307
400~499 クライアントのリクエストにエラーがあります。よく使われる404
500~599 サーバー側でエラーが発生しました、よく使われる500

http 响应消息头详解
  1. Location:让浏览器重新定位到 指定的 URL

  2. Server:告诉浏览器 服务器的类型

  3. Content-Encoding:服务端能够发送压缩编码类型

  4. Content-Length: 服务器端发送的压缩数据的长度

  5. Content-Langage:服务端发送的语言类型

  6. Content-Type:服务端发送的类型及采用的编码方式

  7. Last-Modified:服务端对该资源最后的修改(更新)时间

  8. Refresh:服务端要求浏览器在指定的时间,刷新,然后访问指定的页面路径

  9. Content-Disposition:attachmen;filename=aaa.zip 服务端要求客户端一下载文件的方式打开该文件,即告诉浏览器有文件需要下载

  10. Transfer-Encoding:传送数据到客户端的方式

  11. Set-Cookie:服务端发送到客户端的暂存数据

  12. Cache-Control:告诉浏览器如何缓存页面数据

  13. Expires:告诉浏览器如何缓存页面数据 参数 -1 不缓存

  14. Pragma:告诉浏览器如何缓存页面数据

  15. Connection:维护客户端和服务端的连接关系 是否保持连接

  16. Date:服务端响应客户端的时间

Expires、Pragma、Cache-Control 设置不缓存
// 指定该页面不缓存   ie浏览器内核response.setDateHeader("Expires",-1);// 兼容设置response.setHeader("Cache-Control","no-cache");response.setHeader("Pragma","no-cache");

Expires、Pragma、Cache-Control 设置 指定缓存时间
// 指定该页面缓存指定时间   ie浏览器内核response.setDateHeader("Expires",System.currentTimeMillis()*3600*1000*24;

HTTP 请求的细节————通用信息头

通用信息头指既能用于请求,又能用于响应的一些消息头

Cache-Control:no-cache

Pragma:no-cache

Connection:close/Keep-Alive

Date:Tue,。。。

以上がHTTPプロトコルの詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。