日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

http请求过程以及请求方法和状态码

發布時間:2023/12/15 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 http请求过程以及请求方法和状态码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.HTTP協議

1.1定義

http(超文本傳輸協議)是用于客戶端瀏覽器和web服務器之間傳輸信息的協議,它規定了一系列約定,以便信息可以在瀏覽器和服務器之間有效的傳輸。規定了URL的格式、瀏覽器發送請求都要發送哪些內容、服務器響應要返回哪些信息等。

1.2 請求和響應過程

(1) 輸入網址

(2) 域名解析

2.1 瀏覽器自身緩存(chrome://net-internals/#dns)

2.2 搜索操作系統自身的DNS緩存(瀏覽器沒有找到緩存或者緩存已經失效,則跳轉到第2.3步)

2.3 讀取本地的host文件

2.4 瀏覽器發起一個DNS的系統調用(本地主控DNS服務器:寬帶運營商服務器查看本身緩存)

2.5 運營商服務器發起一個迭代DNS解析的請求

根域.com服務器查找比如http://www.jianshu.com域服務器

運營商服務器得到結果返回給操作系統內核

操作系統內核返回給瀏覽器并緩存

瀏覽器最終拿到了域名對應的ip地址

(3) 瀏覽器獲得域名對應的IP地址后,瀏覽器與服務器建立TCP、UDP連接.

(4) 瀏覽器給web服務器發送一個http請求

TCP/IP連接建立起來后,瀏覽器就可以向服務器發送HTTP請求了,比如,使用了HTTP的GET方法請求一個根域名里的一個域名等等。

(5) 服務器處理請求,給瀏覽器響應

(6) 瀏覽器根據返回結果進行處理或頁面渲染

整體的請求和響應過程如圖:

1.3請求報文

一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數據4個部分組成,下圖給出了請求報文的一般格式。

2.請求方法

2.1兩種 HTTP 請求方法:GET 和 POST

在客戶機和服務器之間進行請求-響應時,兩種最常被用到的方法是:GET 和 POST。

GET- 從指定的資源請求數據。
POST- 向指定的資源提交要被處理的數據

2.2比較 GET 與 POST

GET POST
后退按鈕/刷新 無害 數據會被重新提交(瀏覽器應該告知用戶數據會被重新提交)。
書簽 可收藏為書簽 不可收藏為書簽
緩存 能被緩存 不能緩存
編碼類型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。為二進制數據使用多重編碼。
歷史 參數保留在瀏覽器歷史中。 參數不會保存在瀏覽器歷史中。
對數據長度的限制 是的。(URL 的最大長度是 2048 個字符)。 無限制。
對數據類型的限制 只允許 ASCII 字符。 沒有限制。也允許二進制數據。
安全性

GET 的安全性較差,因為所發送的數據是 URL 的一部分。

在發送密碼或其他敏感信息時絕不要使用 GET !

POST 比 GET 更安全,因為參數不會被保存在瀏覽器歷史或 web 服務器日志中。
可見性 數據在 URL 中對所有人都是可見的。 數據不會顯示在 URL 中。

3.狀態碼

較為常見的幾個返回碼:200 400 406 500 502 504

分類 分類描述
1xx 請求已被接受,需要繼續處理。
2xx 請求已成功被服務器接收、理解并接受。
3xx 重定向
4xx 客戶端錯誤
5xx 服務器錯誤
200:請求成功

301 :被請求的資源已永久重定向到其他URI。
302 :請求的資源現在臨時從不同的URI響應請求。

403 :對請求資源的訪問被服務器拒絕了。(權限,未授權IP等)
404 :服務器上沒有請求的資源。路徑錯誤等。

500 :服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。
503 :由于臨時的服務器維護或者過載,服務器當前無法處理請求。

4.session和cookes的區別

4.1、無狀態的HTTP協議

HTTP協議是無狀態的協議。一旦數據交換完畢,客戶端與服務器端的連接就會關閉,再次交換數據需要建立新的連接。這就意味著服務器無法從連接上跟蹤會話。

4.2、會話跟蹤

  會話,指用戶登錄網站后的一系列動作,比如瀏覽商品添加到購物車并購買。會話跟蹤是Web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤技術是Cookie與Session。

Cookie通過在客戶端記錄信息確定用戶身份Session通過在服務器端記錄信息確定用戶身份

4.2.1、cookie

1、會話Cookie和持久Cookie

若不設置過期時間,則表示這個cookie的生命期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就消失。這種生命期為瀏覽器會話期的cookie被稱為會話cookie。會話cookie一般不存儲在硬盤上而是保存在內存里。

若設置了過期時間,瀏覽器就會把cookie保存到硬盤上,關閉后再次打開瀏覽器,這些cookie仍然有效直到超過設定的過期時間。存儲在硬盤上的cookie可以在瀏覽器的不同進程間共享。這種稱為持久Cookie。

2、Cookie具有不可跨域名性

4.3. 總結

1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。

2、cookie不是很安全,別人可以分析存放在本地的cookie并進行cookie欺騙,考慮到安全應當使用session。

3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能,考慮到減輕服務器性能方面,應當使用cookie。

4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。

5、可以考慮將登陸信息等重要信息存放為session,其他信息如果需要保留,可以放在cookie中。

5.http1.0,http1.1,http2.0區別

5.1 http1.0和http1.1

1.緩存處理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires來做為緩存判斷的標準,HTTP1.1則引入了更多的緩存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來控制緩存策略。

2.帶寬優化及網絡連接的使用,HTTP1.0中,存在一些浪費帶寬的現象,例如客戶端只是需要某個對象的一部分,而服務器卻將整個對象送過來了,并且不支持斷點續傳功能,HTTP1.1則在請求頭引入了range頭域,它允許只請求資源的某個部分,即返回碼是206(Partial Content),這樣就方便了開發者自由的選擇以便于充分利用帶寬和連接。

3.錯誤通知的管理,在HTTP1.1中新增了24個錯誤狀態響應碼,如409(Conflict)表示請求的資源與資源的當前狀態發生沖突;410(Gone)表示服務器上的某個資源被永久性的刪除。

4.Host頭處理,在HTTP1.0中認為每臺服務器都綁定一個唯一的IP地址,因此,請求消息中的URL并沒有傳遞主機名(hostname)。但隨著虛擬主機技術的發展,在一臺物理服務器上可以存在多個虛擬主機(Multi-homed Web Servers),并且它們共享一個IP地址。HTTP1.1的請求消息和響應消息都應支持Host頭域,且請求消息中如果沒有Host頭域會報告一個錯誤(400 Bad Request)。

5.長連接,HTTP 1.1支持長連接(PersistentConnection)和請求的流水線(Pipelining)處理,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲,在HTTP1.1中默認開啟Connection: keep-alive,一定程度上彌補了HTTP1.0每次請求都要創建連接的缺點。

5.2HTTP2.0和HTTP1.X相比的新特性

 

 1.新的二進制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本協議的格式解析存在天然缺陷,文本的表現形式有多樣性,要做到健壯性考慮的場景必然很多,二進制則不同,只認0和1的組合。基于這種考慮HTTP2.0的協議解析決定采用二進制格式,實現方便且健壯

 2.多路復用(MultiPlexing),即連接共享,即每一個request都是是用作連接共享機制的。一個request對應一個id,這樣一個連接上可以有多個request,每個連接的request可以隨機的混雜在一起,接收方可以根據request的 id將request再歸屬到各自不同的服務端請求里面

 3.header壓縮,如上文中所言,對前面提到過HTTP1.x的header帶有大量信息,而且每次都要重復發送,HTTP2.0使用encoder來減少需要傳輸的header大小,通訊雙方各自cache一份header fields表,既避免了重復header的傳輸,又減小了需要傳輸的大小

 4.服務端推送(server push),同SPDY一樣,HTTP2.0也具有server push功能。

5.3HTTPS與HTTP的一些區別  

http端口:80 https端口:443

https是對http協議的升級,增加了數據加密,通過SSL/TLS加密

HTTPS協議需要到CA申請證書,一般免費證書很少,需要交費。

HTTP協議運行在TCP之上,所有傳輸的內容都是明文,HTTPS運行在SSL/TLS之上,SSL/TLS運行在TCP之上,所有傳輸的內容都經過加密的。

HTTP和HTTPS使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

HTTPS可以有效的防止運營商劫持,解決了防劫持的一個大問題。

             

總結

以上是生活随笔為你收集整理的http请求过程以及请求方法和状态码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。