https://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672 .htmlを学びHTTP HTTPS: //www.cnblogs.com/TankXiao/archive/2012/02/06/2337728 .htmlをフィドラー学ぶ ================================================ ================================================== === ハイパーテキスト転送プロトコル(HTTP):それはクライアントのブラウザにWebサーバーから転送されたハイパーテキストマークアップ言語(HTML)文書可能にする通信プロトコルである 、我々はHTTPを使用している現状では /1.1 バージョン 我々はブラウザを開きます、アドレスバーにURLを入力して、私たちはウェブサイトを見ました。原理はそれが何であるかです: URLを入力した後、Webサーバーへの私たちのブラウザが送信したHTTPリクエスト(HTTPリクエスト)を、
Webサーバ、HTTP要求(HTTPリクエスト)を受信した後に処理するために 、対応する生成するHTTP応答(HTTPレスポンス)その後、ブラウザに送られた ので、我々はページ上に表示することをHTMLでブラウザパースHTTP応答(HTTPレスポンス)、。
-------------------------------------------------- ------------------------------------------
HTTPメッセージを2つに分類されます。 HTTP要求と応答のための主要なメッセージパケットのhttp: HTTPリクエスト(HTTPリクエスト) ----> ブラウザサーバ のhttpレスポンス(応答HTTP) <---- ------------- -------------------------------------------------- --------------------------- 私たちの要求は、おそらくプロキシサーバーの結果であり、最終的にWebサーバに到達します。 次のようにプロセスがある: リクエスト ----> ----リクエスト> ブラウザのプロキシサーバーの レスポンス <----レスポンス<---- プロキシサーバーがそれをどの機能ネットワーク情報、ための通過点である: 1 。アクセス速度を向上させ、プロキシサーバーのほとんどは、キャッシュ機能を持っています。 2 。壁を越え、あること、ブレイクアウト 3 。自分の身元を隠します。 -------------------------------------------------- -------------------------------------------------- -
URL(ユニフォームリソースロケータ)アドレスは、ネットワーク上のリソースを記述するために使用される、基本的なフォーマットは、次のされています。 スキーマ: //ホスト:[ポート#?[クエリ文字列]] /パス/.../ [#アンカー] スキームは、低レベルを指定しました(例えば:HTTP、HTTPS、FTP)使用されるプロトコル IPアドレスまたはドメインネームサーバHTTPホスト ポート#の HTTPサーバ80のデフォルトのポートは、この下のスローガンを省略してもよいです。あなたが別のポートを使用する場合は、http://www.cnblogs.com:8080/例えば、指定する必要があります リソースパスにアクセスするためのパス のクエリを - 文字列は、httpサーバのデータに送信された アンカー - ハイパーリンクであるアンカー、ページのみをページが非常に長いですし、ページの上部にアンカーを設定することができるように、コンテンツ内は、N個の部分に分割された場合、内部のハイパーリンク 、対応するアンカーをクリックすることで簡単に表示するために、このページ上の適切な場所への迅速なアクセスを。 文字の前にあるURL、右端のアンカー、「#。」 例: HTTP://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true #スタッフ スキーマ(プロトコル):HTTP ホスト(ドメイン名):www.mywebsite.com パス(リソース・ロード・キング): / SJ /テスト/ Test.aspxという クエリ文字列(パラメータ):名 = X =&sviergn 真の レコード(アンカー):スタッフ ----------------------------- -------------------------------------------------- --------------------------- HTTPプロトコルはステートレスで 、HTTPプロトコルはステートレスであるクライアントの要求と最後でこの時間httpサーバの要求との間には対応関係がありません、それは同じクライアントからのこれら2つの要求を知りません。 この問題を解決するために、Webプログラムは、状態を維持するためにクッキーメカニズムを導入しました。
-------------------------------------------------- -------------------------------------------------- ----------------------
-------------------------------------------------- -------------------------------------------------- ----------------------
時代の要求の多くを送信するために、Webブラウザのニーズを開きます。
1.ブラウザがHTML http://www.cnblogs.comを取得するための要求を送信すると、ブラウザでURL http://www.cnblogs.comを入力してください。応答がブラウザにサーバーに送り返さ。
HTMLでのレスポンスブラウザの2の分析、および、そのような画像、CSSファイル、JSファイルなどの他のファイルへの参照の多くを発見しました。
3.ブラウザは、自動的に取得画像、CSSファイル、またはJSファイルを再度要求を送信します。
4.他のすべてのファイルが成功した後にダウンロードされます。Webページが表示されていました。
例:(RAWタブサブタブの内側に存在検査官フィドラー)
詳細httpプロトコルのパケットフォーマット
HTTPリクエストメッセージ:
POST https://anp.njpji.cn/un_manager/user/toLogin HTTP/1.1 Host: anp.njpji.cn Connection: keep-alive Content-Length: 85 Accept: */* Origin: https://anp.njpji.cn X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36 Content-Type: application/x-www-form-urlencoded;charset=UTF-8 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Referer: https://anp.njpji.cn/un_manager/views/session/login.html Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cookie: Hm_lvt_70a44149803685eae3a9163f23ea34b7=1566289322,1566346318; JSESSIONID=C8ACE0B8E7E4E05C0EDE0752C1B8A771 username=7droqslNzQg%3D&password=Jrrw3HiJ%2BArijSvr3jrq1Q%3D%3D&verificationCode=2395
http请求报文的结构: 浏览器发送给web服务器的http请求报文,如下所示:
先看Request 消息的结构, Request 消息分为3部分:
第一部分叫Request line, ------------>起始行
第二部分叫Request header, ------------>首部
第三部分是body, ------------>主体
注意:header和body之间有个空行,
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第一行中的Method表示请求方法,比如"POST","GET", Path-to-resoure表示请求的资源, Http/version-number 表示HTTP协议的版本号。
当使用的是"GET" 方法的时候, body是为空的。
我们打开Fiddler 捕捉一个登录的Request 然后分析下它的结构, 在Inspectors tab下以Raw的方式可以看到完整的Request的消息。
请求方法 请求资源即URL http协议的版本号 POST https://anp.njpji.cn/un_manager/user/toLogin HTTP/1.1 ---------起始行 Host: anp.njpji.cn --------->下面是header首部 Connection: keep-alive Content-Length: 85 Accept: */* Origin: https://anp.njpji.cn X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36 Content-Type: application/x-www-form-urlencoded;charset=UTF-8 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Referer: https://anp.njpji.cn/un_manager/views/session/login.html Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cookie: Hm_lvt_70a44149803685eae3a9163f23ea34b7=1566289322,1566346318; JSESSIONID=5C305287359661147AD9C5570451A7E8 ------->空行 username=7droqslNzQg%3D&password=Jrrw3HiJ%2BArijSvr3jrq1Q%3D%3D&verificationCode=0237 ------> 此处为body主体
===========================================================================================================
http响应报文:
HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Sun, 29 Dec 2019 08:09:54 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Strict-Transport-Security: max-age=31536000; includeSubDomains X-Frame-Options: SAMEORIGIN 49 {"respCode":"00","respDesc":"用户账户信息校验成功","data":null} 0
http响应报文结构: web服务器发送给浏览器的http响应报文内容:
Response消息的结构, 和Request消息的结构基本一样。 同样也分为三部分:
第一部分叫Response line, ------------>响应行
第二部分叫Response header, ------------>响应首部
第三部分是body, ------------>主体
header和body之间也有个空行,
第一行,起始行中有状态码,和状态码消息
HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Sat, 07 Dec 2019 09:05:17 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Strict-Transport-Security: max-age=31536000; includeSubDomains X-Frame-Options: SAMEORIGIN 49 {"respCode":"00","respDesc":"用户账户信息校验成功","data":null} 0
=============================================================================================
解压http响应:
有的时候再fiddler抓包的过程中,经常看到http响应是乱码,单击:" Response body is encoded.Click to decode "按钮;
可以解压http响应。如下图: