HTTP的基本內容

2021-10-03 16:07:34 字數 1909 閱讀 8576

什麼是http協議?

http協議即超文字傳輸協議,是乙個客戶端和伺服器端請求和應答的標準,通過使用網路瀏覽器、網路爬蟲或者其他工具,客戶端傳送乙個http請求到伺服器指定的埠上(一般預設為80埠),我們稱這個客戶端為使用者**程式。應答的伺服器上儲存著一些資源,比如html和一些,我們稱這個應答伺服器為源伺服器。在使用者**和源伺服器之間可能存在多個中間層,比如**伺服器、閘道器或者隧道。

通常,由http客戶端傳送乙個請求,建立乙個伺服器指定埠的tcp連線,http伺服器則在那個埠監聽客戶端的請求,一旦收到請求,伺服器會向客戶端返回乙個狀態,比如「http/1.1 200 ok」,以及返回的內容,比如請求的檔案、錯誤資訊或者其它資訊。

http報文的組成部分?

(1)請求報文

請求行:http方法,頁面位址,http協議以及版本

請求頭:key:value 告訴服務端我要哪些內容

空行:告訴伺服器不再是請求頭部分了

請求體

(2)響應報文

狀態行:http協議版本,狀態碼

響應頭:key:value

空行:告訴伺服器不再是響應頭部分了

響應體

http方法

(1)get:獲取資源

(2)post:傳輸資源

(3)head:獲取報文首部,向伺服器發出指定資源的請求,但是伺服器不傳回資源的本文部分。使用這個方法可在不必傳輸全部內容的情況下,就可以獲取其中請求資源的內容。

(4)put:更新資源

(5)delete:刪除資源

post和get的區別?

(1) get在瀏覽器回退時是無害的,而post會再次提交請求

(2)get請求會被瀏覽器主動快取,而post不會,除非手動設定

(3)get請求引數會完整的保留在瀏覽器歷史記錄裡,而post的引數不會被保留

(4)get請求在url中傳送的引數是有長度限制的,而post沒有限制

(5)get引數通過url傳遞,post放在request body中

(6)get產生的url位址可以被收藏,而post不可以

(7)get請求只能進行url編碼,而post支援多種編碼方式。

(8)對引數的資料型別,get只接受ascii字元,而post沒有限制

什麼是持久連線

http協議採用請求-應答模式,當使用普通模式,即非keep-alive 模式時,每個請求/應答客戶和伺服器都要重新建立乙個連線,完成之後立即斷開連線(http協議為無連線協議)

當使用keep-alive 模式(持久連線或連線重用)時,keep-alive 的功能使客戶端到伺服器端的連線持續有效,當出現對伺服器的後繼請求時,keep-alive 避免了建立或重新建立連線,但是持久連線只有在http 1.1 版本才支援。

什麼是管線化?

在持久連線下,一次性將請求傳送給伺服器,相應一次性打包回來,就不會是請求一次響應一次這種。

(1)管線化機制通過持久連線完成,僅http/1.1支援此技術

(2)只有get和head 請求可以進行管線化,而post則有所限制

(3)初次建立連線時不應啟動管線機制,因為對方(伺服器)不一定支援http/1.1版本的協議

(4)管線化不會影響響應到來的順序,如上的例子所示,響應返回的順序是未改變的

(5)http/1.1 要求伺服器端支援管線化,但並不要求伺服器端也對響應進行管線化管理,只是要求對管線化的請求不失敗即可。

(6)由於上面提到的伺服器端問題,開啟管線化很可能並不會帶來大幅度的效能提公升,而且很多伺服器端和**程式對管線化的支援並不好,因此現代瀏覽器如chrome 和 firefox 預設未開啟管線化支援。

python 基本內容

1.包 import 模組名 這個包首先在當前目錄找。每個模組中可以用 name 判斷是否為 main 來執行程式 建立包pack,建立乙個資料夾然後建立 init py import pack.filename pack.filename.f 引用包重新命名 import pack as newn...

Servlet基本內容

常用的狀態碼如下 200 請求成功。302 請求重定向。304 請求資源沒有改變,訪問本地快取。404 請求資源不存在。通常是使用者路徑編寫錯誤,也可能是伺服器資源已刪除。500 伺服器內部錯誤。通常程式拋異常。狀態資訊 狀態資訊是根據狀態碼變化而變化的 1 servlet技術 2 filter技術...

php基本內容

1.注釋 或者 name admin echo hello name 2.變數 以 開頭 name admin echo hello name 3.字串拼接 使用 name admin echo hello name 4.物件訪問屬性 使用 class obj o newobj echo o nam...