http 基礎知識

2022-09-08 17:42:11 字數 3760 閱讀 4718

http 採用了請求/響應模型。

客戶端向伺服器傳送乙個請求,請求頭包含請求的方法、url 、協議版本、請求修飾符、客戶資訊、內容的類似於 mime 的訊息結構。

伺服器以乙個狀態行作為響應,響應的內容包括訊息協議版本、成功或者錯誤編碼加上伺服器資訊、實體元資訊、可能的實體內容。

一、通用頭域

通用頭域包含請求和響應都支援的頭域。

通用頭域包含 cache-control 、connection 、date 、prama 、ttansfer-encoding 、upgrade、via

cache-control

功能:指定請求和響應遵循的快取機制。

請求時的快取指令:no-cache、no-store、max-age、max-stale、min-fresh、only-if-cache

響應訊息中的指令:public、private、no-cache、no-store、no-tramsform、must-revalite、proxy-revalite、max-age

public:響應可被任何快取區快取。

private:對於單個使用者的整個或部分響應訊息,不能被共享處理。這允許伺服器僅僅描述當前使用者的部分響應訊息,此響應訊息對於其他使用者的請求無效。

no-cache:請求或響應訊息不能快取。

no-store:在請求訊息中傳送,將使得請求和響應訊息都不能被快取(用於防止重要訊息被無意發布)。

max-age:客戶機可以接收生存期不大於指定時間(以秒為單位)的響應。

min-fresh:客戶機可以接收響應時間小於當前時間加上指定時間的響應。

max-store:客戶機可以接收超出超時期間的響應訊息。如果指定max-stale訊息的值,那麼客戶機可以接收超出超時期指定值之內的響應訊息。

connection

keep-alive功能使客戶端到伺服器端的連線持續有效,當出現對伺服器的後繼請求時,keep-alive功能避免了建立或者重新建立連線。

keepalivetime 值控制 tcp/ip 嘗試驗證空閒連線是否完好的頻率。

date

訊息傳送的時間

prama

用來包含實現特定的指令,最常用的是 prama:no-cache。

二、請求訊息

host 頭域

指定請求資源的 intenet 主機和埠號,必須表示請求 url 的原始伺服器或閘道器的位置。http/1.1 請求必須包含主機頭域,否則系統會以 400 狀態碼返回。

referer 頭域

referer 頭域允許客戶端指定請求 url 的資源位址,這可以允許伺服器生成回退鍊錶,可用來登入、優化 cache 等。他也允許廢除的或錯誤的鏈結由於維護的目的被追蹤。如果請求 url 沒有自己的 url 位址,referer 不能被傳送。如果指定的是部分 url 位址,則此位址應該是乙個相對位址。

range 頭域

range 頭域可以指定請求實體的乙個或多個子範圍。

伺服器可以忽略此請求頭,如果無條件 get 包含 range 請求頭,狀態會以狀態碼 206 (partialcontent)返回而不是以 200(ok)返回。

user-agent 頭域

user-agent 頭域的內容包含發出請求的使用者(客戶端)的資訊。

三、響應訊息

響應頭域允許伺服器傳遞不能放在狀態行的附加資訊,這些頭域主要描述伺服器的資訊和 request-url 進一步的資訊。響應頭域包含 age、proxy-authenticate、public、retry-after、server、vary、warning、www-authenticate。對響應頭域的擴充套件要求通訊雙方都支援,如果存在不支援的響應頭域,一般會作為實體頭域處理。

location 響應頭

location 響應頭用於接收者重定向到乙個新的 uri 位址。

server 響應頭

server 響應頭包含處理請求的原始伺服器的軟體資訊。此頭域包含多個產品標識和注釋,產品標識一般按照重要性排序。

四、實體訊息

請求訊息和響應訊息都可以包含實體訊息,實體訊息一般由實體頭域和實體組成。

content-type 實體頭

content-type 實體頭用於向接收方指示實體的介質型別,指定 head 方法送到接收方的實體介質型別,或 get 方法傳送的請求介質型別。

content-range 實體頭

content-range 實體頭指定整個實體中的一部分的插入位置,它也指示了整個實體的長度。在伺服器向客戶端返回乙個部分響應,它必須描述響應覆蓋的範圍和整個實體的長度。

last-modified 實體頭

last-modified 實體頭指伺服器上儲存內容的最後修訂時間。

五、運作方式

在www中,「客戶」與「伺服器」是乙個相對的概念,只存在於乙個特定的連線期間,即在某個連線中的客戶在另乙個連線中可能作為伺服器。基於http協議的客戶/伺服器模式的資訊交換過程,它分四個過程:建立連線、傳送請求資訊、傳送響應資訊、關閉連線。

任何伺服器除了包括html檔案以外,還有乙個http駐留程式,用於響應使用者請求。你的瀏覽器是http客戶,向伺服器傳送請求,當瀏覽器中輸入了乙個開始檔案或點選了乙個超級鏈結時,瀏覽器就向伺服器傳送了http請求,此請求被送往由ip位址指定的url。駐留程式接收到請求,在進行必要的操作後回送所要求的檔案。在這一過程中,在網路上傳送和接收的資料已經被分成乙個或多個資料報(packet),每個資料報包括:要傳送的資料;控制資訊,即告訴網路怎樣處理資料報。tcp/ip決定了每個資料報的格式。如果事先不告訴你,你可能不會知道資訊被分成用於傳輸和再重新組合起來的許多小塊。

六、常見的 http 狀態碼

1xx:資訊響應類,表示接收到請求並且繼續處理。

100:表示伺服器接收到了請求頭,如果請求沒完成就繼續傳送,如果完成了則忽略

101:表示切換協議,常用在 websocket 協議切換。

2xx:處理成功響應類,表示動作被成功接收、理解和接受。

200:最為常見的狀態碼,表示請求已成功

203:表示伺服器完成了請求但返回的內容經過了**伺服器的修改

204:表示伺服器完成了請求但沒有返回內容

206:表示伺服器完成了請求返回了部分內容以及內容的區間(range 頭)

3xx:生定向響應類,為了完成指定的動作,必須接受進一步的處理。

4xx:客戶端錯誤響應類,客戶請求包含語法錯誤或不能正確執行。

400:請求有明顯錯誤,伺服器無法處理請求

401:表示請求需要使用者認證,響應中會攜帶 www-authenticate 頭

403:表示伺服器理解請求但是拒絕執行

404:最常見的 4xx 狀態碼,表示請求失敗,伺服器上找不到相關資源

5xx:伺服器錯誤響應類,伺服器不能正確執行乙個正確的請求。

500:通用的錯誤訊息,表示伺服器出現錯誤

502:表示伺服器在請求乙個上游伺服器時出錯了

503:表示伺服器正在維護或是過載了,通常是臨時性的

504:表示伺服器在請求乙個上游伺服器時用時過長

HTTP 基礎知識

具體去看原文 你應該知道的http基礎知識 1.http請求報文格式 http的請求報文分為三個部分請求行 請求頭和請求體。1.1 請求行 請求行 request line 分為三個部分 請求方法 請求位址和協議及版本,以crlf r n 結束。http 1.1定義的請求方法有8中 get post...

HTTP 基礎知識

標籤位於文件的頭部,不包含任何內容。標籤的屬性定義了與文件相關聯的名稱 值對。標籤永遠位於 head 元素內部。http equiv 屬性為名稱 值對提供了名稱。並指示伺服器在傳送實際的文件之前先在要傳送給瀏覽器的 mime 文件頭部包含名稱 值對。當伺服器向瀏覽器傳送文件時,會先傳送許多名稱 值對...

HTTP基礎知識

get 用於請求訪問已經被uri 統一資源識別符號 識別的資源,可以通過url傳參給伺服器 post 用於傳輸資訊給伺服器,主要功能與get方法類似,但一般推薦使用post方式。put 傳輸檔案,報文主體中包含檔案內容,儲存到對應uri位置。head 獲得報文首部,與get方法類似,只是不返回報文主...