一文讀懂HTTP相關知識點

一文讀懂HTTP相關知識點

前言

我們知道目前很多應用系統中的內容傳輸協議採用的HTTP協議,因此不管你是前端人員、後端人員、運維人員,甚至是管理人員,都需要掌握HTTP知識!!

HTTP發展歷史

HTTP/0.9

該版本只有一個命令GET;沒有HEADER等描述數據的信息; 服務器發送完畢,就關閉TCP連接。

HTTP/1.0

該版本增加了很多命令;增加status code 和header;多字符集支持、多部分發送、權限、緩存等。

HTTP/1.1

該版本增加了持久連接Pipeline,增加host和其他一些命令。持久連接會在HTTP特性中介紹;如果沒有pipeline,那麼Web服務器就需要串行處理請求,而有了pipeline,Web服務器就並行處理請求;而增加host實現了一臺物理設備可以運行多個web服務。

HTTP/2.0

所有數據以二進制傳輸,之前版本使用字符串進行傳輸;同一個連接 裡面發送多個請求不再需要按照順序來;頭信息壓縮以及推送等提高效率的功能。

HTTP三次握手

一文讀懂HTTP相關知識點

一文讀懂HTTP相關知識點

為什麼要三次握手?因為網絡是有可能延遲的,當客戶端沒有收到服務端的確認包,如果沒有第三次握手,那麼服務端不知道上次傳輸是不是被客戶端正常接收了,如果沒有接收,服務端的這個端口也是打開的,這就比較浪費資源。

HTTP報文

一文讀懂HTTP相關知識點

HTTP報文分為請求報文響應報文,請求報文和響應報文分為起始行、首部(header)和主體(body),請求報文的首部包括三部分,分別是HTTP方法、資源目錄和協議,而響應報文的首部包括協議版本、狀態碼和狀態嗎對應的意思,比如200狀態的意思是ok。需要注意的是:HTTP header和HTTP body之間以一行分隔。

HTTP方法

HTTP方法定義對資源的操作,常用的有GET、POST等,這就就不詳細展開了。

HTTP Code

HTTP Code用於定義服務器對請求的處理結果,各個區間的code有不用的語義。1xx 表示信息響應類,表示接收到請求並且繼續處理;2xx 表示成功;3xx 表示重定向;4xx 表示客戶端出錯;5xx 表示服務器出錯。

HTTP特性

跨域請求

同源策略,也就是說當兩個請求的URL的協議、host和端口都相同的情況下,我們才認為這兩個請求是同域的即同源,而只要協議、host和端口只要有一項是不同的,我們就認為是不同源的,即跨域,例如:

http://www.mukedada.com:80

http://www.mukedada.com:8080

上述兩個請求就是跨域請求。需要注意的是跨域請求不是說瀏覽器限制了發起跨站請求,瀏覽器只是將返回結果攔截下來,最好的例子就是CSRF跨站腳本攻擊。如果我們想讓瀏覽器放行返回結果,則通過以下方法:

  1. 服務端設置Access-Control-Allow-Origin參數為允許,例如'Access-Control-Allow-Origin' : '*'


分享到:


相關文章: