天天看點

HTTP協定的認識

HTTP是什麼

HTTP(HyperText Transfer Protocol)協定是基于TCP的應用層協定,它不關心資料傳輸的細節,主要是用來規定用戶端和服務端的資料傳輸格式,最初是用來向用戶端傳輸HTML頁面的内容。預設端口是80。

HTTP協定特點

1.HTTP協定是無狀态的

就是說每次HTTP請求都是獨立的,任何兩個請求之間沒有什麼必然的聯系。但是在實際應用當中并不是完全這樣的,引入了Cookie和Session機制來關聯請求。

2.多次HTTP請求

在用戶端請求網頁時多數情況下并不是一次請求就能成功的,服務端首先是響應HTML頁面,然後浏覽器收到響應之後發現HTML頁面還引用了其他的資源,例如,CSS,JS檔案,圖檔等等,還會自動發送HTTP請求這些需要的資源。現在的HTTP版本支援管道機制,可以同時請求和響應多個請求,大大提高了效率。

3.基于TCP協定

HTTP協定目的是規定用戶端和服務端資料傳輸的格式和資料互動行為,并不負責資料傳輸的細節。底層是基于TCP實作的。現在使用的版本當中是預設持久連接配接的,也就是多次HTTP請求使用一個TCP連接配接。

HTTP請求方法

1.GET:擷取資源

GET方法用來請求通路已被URI識别的資源。也就是指定了伺服器處理請求之後響應的内容。

2.POST:傳輸實體主體

POST方法用來傳輸實體主體。POST與GET的差別之一就是目的不同,二者之間的差別會在文章的最後詳細說明。雖然GET方法也可以傳輸,但是一般不用,因為GET的目的是擷取,POST的目的是傳輸。

3.PUT:傳輸檔案

PUT方法用來傳輸檔案。類似FTP協定,檔案内容包含在請求封包的實體中,然後請求儲存到URL指定的伺服器位置。

4.DELETE:删除檔案

DELETE方法用來删除檔案,是與PUT相反的方法。DELETE是要求傳回URL指定的資源。

HTTP狀态碼

1. 200:OK

這個沒有什麼好說的,是代表請求被正常的處理成功了。

2. 302:Found

代表臨時重定向。該狀态碼表示請求的資源已經被配置設定了新的URL,但是和301的差別是302代表的不是永久性的移動,隻是臨時的。就是說這個URL還可能會發生改變。如果儲存成書簽了也不會更新。

3.404:Not Found

表明請求的資源在伺服器上找不到。當然也可以在伺服器拒絕請求且不想說明理由時使用。

4.500:Internal Server Error

表明伺服器端在執行請求時發生了錯誤,很有可能是服務端程式的Bug或者臨時故障。

c#