精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
HTTP請求的完全過程
userphoto

2022.10.19 北京

關注

1.1 瀏覽器根據域名解析IP地址
       瀏覽器根據訪問的域名找到其IP地址。DNS查找過程如下:

瀏覽器緩存:首先搜索瀏覽器自身的DNS緩存(緩存的時間比較短,大概只有1分鐘,且只能容納1000條緩存),看自身的緩存中是否是有域名對應的條目,而且沒有過期,如果有且沒有過期則解析到此結束。
系統緩存:如果瀏覽器自身的緩存里面沒有找到對應的條目,那么瀏覽器會搜索操作系統自身的DNS緩存,如果找到且沒有過期則停止搜索解析到此結束。
路由器緩存:如果系統緩存也沒有找到,則會向路由器發送查詢請求。
ISP(互聯網服務提供商) DNS緩存:如果在路由緩存也沒找到,最后要查的就是ISP緩存DNS的服務器。
1.2 瀏覽器與WEB服務器建立一個TCP連接
       TCP的3次握手。

1.3 瀏覽器給WEB服務器發送一個HTTP請求
       一個HTTP請求報文由請求行(request line)、請求頭部(headers)、空行(blank line)和請求數據(request body)4個部分組成。

 

1.3.1 請求行

       請求行分為三個部分:請求方法、請求地址URL和HTTP協議版本,它們之間用空格分割。例如,GET /index.html HTTP/1.1。

1.請求方法

       HTTP/1.1 定義的請求方法有8種:GET(完整請求一個資源)、POST(提交表單)、PUT(上傳文件)、DELETE(刪除)、PATCH、HEAD(僅請求響應首部)、OPTIONS(返回請求的資源所支持的方法)、TRACE(追求一個資源請求中間所經過的代理)。最常的兩種GET和POST,如果是RESTful接口的話一般會用到GET、POST、DELETE、PUT。

(1)GET

       當客戶端要從服務器中讀取文檔時,當點擊網頁上的鏈接或者通過在瀏覽器的地址欄輸入網址來瀏覽網頁的,使用的都是GET方式。GET方法要求服務器將URL定位的資源放在響應報文的數據部分,會送給客戶端。使用GET方法時,請求參數和對應的值附加在URL后面,利用一個問號'?’代表URL的結尾與請求參數的開始,傳遞參數長度受限制。例如,/index.jsp?id=100&op=bind。通過GET方式傳遞的數據直接放在地址中,所以GET方式的請求一般不包含“請求內容”部分,請求數據以地址的形式表現在請求行。地址中'?’之后的部分就是通過GET發送的請求數據,各個數據之間用'&’符號隔開。顯然這種方式不適合傳送私密數據。另外,由于不同的瀏覽器對地址的字符限制也有所不同,一半最多只能識別1024個字符,所以如果需要傳送大量數據的時候,也不適合使用GET方式。如果數據是英文字母/數字,原樣發送;如果是空格,轉換為+;如果是中文/其他字符,則直接把字符串用BASE64加密,得出:%E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進制表示的ASCII。

(2)POST

       允許客戶端給服務器提供信息較多。POST方法將請求參數封裝在HTTP請求數據中,以名稱/值的形式出現,可以傳輸大量數據,這樣POST方式對傳送的數據大小沒有限制,而且也不會顯示在URL中。POST方式請求行中不包含數據字符串,這些數據保存在“請求內容”部分,各數據之間也是使用'&’符號隔開。POST方式大多用于頁面的表單中。因為POST也能完成GET的功能,因此多數人在設計表單的時候一律都使用POST方式,其實這是一個誤區。GET方式也有自己的特點和優勢,我們應該根據不同的情況來選擇是使用GET還是使用POST。

 

 

 

2.URL

       URL:統一資源定位符,是一種資源位置的抽象唯一識別方法。

       組成:<協議>://<主機>:<端口>/<路徑>

       端口和路徑有事可以省略(HTTP默認端口號是80)

 

 

 

3.協議版本

       協議版本的格式為:HTTP/主版本號.次版本號,常用的有HTTP/1.0和HTTP/1.1

1.3.2 請求頭部

       請求頭部為請求報文添加了一些附加信息,由“名/值”對組成,每行一對,名和值之間使用冒號分隔。

       請求頭部的最后會有一個空行,表示請求頭部結束,接下來為請求數據。

 

 

 

1.3.3 請求數據

       請求數據不在GET方法中使用,而在POST方法中使用。POST方法適用于需要客戶填寫表單的場合。與請求數據相關的最長使用的請求頭部是Cntent-Type和Content-Length。下面是一個POST方法的請求報文:

POST  /index.php HTTP/1.1    請求行

Host: localhost

User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  請求頭

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

Accept-Language: zh-cn,zh;q=0.5

Accept-Encoding: gzip, deflate

Connection: keep-alive

Referer: http://localhost/

Content-Length:25

Content-Type:application/x-www-form-urlencoded

  空行

username=aa&password=1234  請求數據

1.4 服務器端響應HTTP請求,瀏覽器得到HTML代碼
       HTTP響應報文由狀態行(status line)、相應頭部(headers)、空行(blank line)和響應數據(response body)4個部分組成。

 

 

 

1.4.1 狀態行

       狀態行由3部分組成,分別為:協議版本、狀態碼、狀態碼掃描。其中協議版本與請求報文一致,狀態碼描述是對狀態碼的簡單描述。

 

 

 

1.4.2 響應頭部

 

 

 

1.4.3 響應數據

       用于存放需要返回給客戶端的數據信息。

HTTP/1.1 200 OK  狀態行

Date: Sun, 17 Mar 2013 08:12:54 GMT  響應頭部

Server: Apache/2.2.8 (Win32) PHP/5.2.5

X-Powered-By: PHP/5.2.5

Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Content-Length: 4393

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=utf-8

  空行

 

<html>  響應數據

<head>

<title>HTTP響應示例<title>

</head>

<body>

Hello HTTP!

</body>

</html>

1.5 瀏覽器解析HTML代碼,并請求HTML代碼中的資源
       瀏覽器拿到HTML文件后,開始解析HTML代碼,遇到靜態資源時,就向服務器端去請求下載。

1.6 關閉TCP連接,瀏覽器對頁面進行渲染呈現給用戶
       瀏覽器利用自己內部的工作機制,把請求到的靜態資源和HTML代碼進行渲染,呈現給用戶。
————————————————
版權聲明:本文為CSDN博主「艾倫lee」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/ailunlee/article/details/90600174

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
[轉]通俗易懂客戶端與服務器端交互原理(HTTP數據請求與HTTP響應,包括Servlet...
HTTP請求方式中8種請求方法(簡單介紹)
TCP/IP(七)之玩轉HTTP協議
HTTP詳解(2)-請求、響應、緩存
爬蟲基本原理
應用層協議HTTP和HTTPS詳解
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 乐业县| 宁德市| 博罗县| 韶山市| 忻州市| 夏邑县| 大城县| 曲靖市| 五莲县| 迭部县| 英山县| 搜索| 正阳县| 景泰县| 蓬莱市| 基隆市| 柘城县| 旬阳县| 建湖县| 普安县| 武威市| 无极县| 海南省| 策勒县| 扎赉特旗| 沈丘县| 蓬安县| 双江| 黄骅市| 进贤县| 汝城县| 唐河县| 定日县| 屏东县| 满城县| 卓资县| 射阳县| 龙井市| 江山市| 方山县| 阿鲁科尔沁旗|