關於HTTP 前端也應該了解一些

2022-09-04 11:03:12 字數 3318 閱讀 4670

http:超文字傳輸協議

2、http的基礎特性:可拓展協議、無狀態有會話的

3、http的元件系統包括客戶端、web伺服器和**(作用:快取、過濾、負載均衡、認證、日誌管理)

4、http報文組成(請求報文、響應報文)

典型的http會話(建立鏈結、客戶端傳送請求、伺服器響應請求)

http請求和響應都包括 起始行、請求頭、空行、body部分

請求起始行包括請求方法、請求路徑、http版本號

響應的起始行包括http版本號、響應狀態碼、文字描述狀態。

請求路徑包括:協議、主機、埠、路徑、引數、錨點

請求方法:

get:請求伺服器傳送某個資源

head:跟get方法類似,但伺服器在響應中只返回了首部,不會返回實體的主圖部分。

put:向伺服器中寫入文件

post:用來向伺服器輸入資料。

trace:主要用於診斷

options:請求web伺服器告知其支援的各種功能。

delete:請求伺服器刪除請求url中置頂的資源

get請求和post請求的區別

1)快取:get請求能快取,post請求不能

2)安全:get請求不如post請求安全,因為get請求都在url中,且會被瀏覽器儲存歷史記錄。post請求放在請求體中,更加安全。

3)限制:url有長度限制,會干預get請求,這是瀏覽器決定的

4)編碼:get請求只能進行url編碼,只能接收ascit字元,而post沒有限制

5)從tcp角度,get請求會把請求報文一次性發出去,而post會分為兩個tcp資料報,首先發header部分,如果伺服器響應100然後發body部分(火狐瀏覽器的post只發乙個包)

一些常見的http狀態碼:

100~199:資訊性狀態碼。指定客戶端應相應的某些動作,代表請求已被接受,需要繼續處理。

200~200:成功狀態碼,表示成功處理了請求的狀態碼

200(成功):表示從客戶端發來的請求在伺服器端被正確處理

201(已建立): 表示請求成功並且伺服器建立了新的資源

202(已接受):伺服器已接受請求但尚未處理

204(無內容):伺服器成功處理了請求但沒有返回任何內容

205(重置內容):伺服器成功處理了請求但沒有返回任何內容

206(部分內容):伺服器成功處理了部分get請求

300~399:重定向狀態碼,表示要完成請求需要進一步操作

300 (多種選擇) 針對請求,伺服器可執行多種操作。 伺服器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。

301 (永久移動) 請求的網頁已永久移動到新位置。 伺服器返回此響應(對 get 或 head 請求的響應)時,會自動將請求者轉到新位置。

302 (臨時移動) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

303 (檢視其他位置) 請求者應當對不同的位置使用單獨的 get 請求來檢索響應時,伺服器返回此**。

304 (未修改) 自從上次請求後,請求的網頁未修改過。 伺服器返回此響應時,不會返回網頁內容。

305 (使用**) 請求者只能使用**訪問請求的網頁。 如果伺服器返回此響應,還表示請求者應使用**。

307 (臨時重定向) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

400~499:客戶端錯誤狀態碼

400 (錯誤請求) 伺服器不理解請求的語法。

401 (未授權) 請求要求身份驗證。 對於需要登入的網頁,伺服器可能返回此響應。

403 (禁止) 伺服器拒絕請求。

404 (未找到) 伺服器找不到請求的網頁。

405 (方法禁用) 禁用請求中指定的方法。

406 (不接受) 無法使用請求的內容特性響應請求的網頁。

407 (需要**授權) 此狀態**與 401(未授權)類似,但指定請求者應當授權使用**。

408 (請求超時) 伺服器等候請求時發生超時。

409 (衝突) 伺服器在完成請求時發生衝突。 伺服器必須在響應中包含有關衝突的資訊。

410 (已刪除) 如果請求的資源已永久刪除,伺服器就會返回此響應。

411 (需要有效長度) 伺服器不接受不含有效內容長度標頭字段的請求。

412 (未滿足前提條件) 伺服器未滿足請求者在請求中設定的其中乙個前提條件。

413 (請求實體過大) 伺服器無法處理請求,因為請求實體過大,超出伺服器的處理能力。

414 (請求的 uri 過長) 請求的 uri(通常為**)過長,伺服器無法處理。

415 (不支援的**型別) 請求的格式不受請求頁面的支援。

416 (請求範圍不符合要求) 如果頁面無法提供請求的範圍,則伺服器會返回此狀態**。

417 (未滿足期望值) 伺服器未滿足"期望"請求標頭字段的要求。

500~599:服務端錯誤狀態碼

500 (伺服器內部錯誤) 伺服器遇到錯誤,無法完成請求。

501 (尚未實施) 伺服器不具備完成請求的功能。 例如,伺服器無法識別請求方法時可能會返回此**。

502 (錯誤閘道器) 伺服器作為閘道器或**,從上游伺服器收到無效響應。

503 (服務不可用) 伺服器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。

504 (閘道器超時) 伺服器作為閘道器或**,但是沒有及時從上游伺服器收到請求。

505 (http 版本不受支援) 伺服器不支援請求中所用的 http 協議版本。

https也是通過http協議進行資訊傳輸,但是採用tls協議進行了加密

http建立鏈結的三次握手和四次揮手

第一次握手:建立連線,客戶端a傳送syn=1、隨機產生sep=client_isn的資料報到伺服器b。等待伺服器確認

第二次握手:伺服器b收到請求後確認聯機(可以接受資料),會發起第二次請求,ack=(a的sep+1)、syn=1,隨機產生sep=client_isn的資料報到a。

第三次握手:a收到後檢查ack是否正確。若正確,a會再傳送確認包ack=(b的sep+1)、ack=1,伺服器b收到後確認seq與ack的值,若正確建立連線。

第一次揮手:當客戶端無資料要傳輸,會傳送fin碼告訴伺服器,我傳送完畢了

第二次揮手:當服務端接受完畢後,告訴客戶端ack碼,告訴客戶端你可以把資料通道關閉了

第三次揮手:當服務端傳送完畢之後,也會傳送fin碼,告訴客戶端可以關閉

第四次揮手:客戶端接收完畢,同樣傳送ack碼,告訴伺服器資料接受完畢,你可以關閉。

關於HTTP的一些學習

第一次進入乙個 時,本地無快取,response成功返回200 伺服器在response header裡,設定了etag和last modify,如下圖 etag欄位將資源唯一性的標識,如果資源有更新,etag值也將變化 last modify表明了在伺服器端最後發生改變的時間 瀏覽器儲存這個eta...

轉 設計師也需要了解的一些前端知識

一 常見視覺效果是如何實現的 一些事 關於文字效果網際網路的一些事 文字自身屬性相關的效果css中都是有相對應的樣式的,如字型大小 行高 加粗 傾斜 下劃線等,但是一些特殊的效果,主要表現為ps中圖層樣式中的效果,css是無能為力的。但是css也在不斷發展,在css3中已經新增了文字陰影的效果,可惜...

關於qsort函式的一些了解

void qsort void base,nelem,width,cmp base 為要排序陣列的首位址 nelem 為要排序陣列的長度 width 為要排序陣列元素的大小 所佔記憶體空間的大小 簡單示例 對int num 100 中的元素從小到大排序。int num 100 int cmp con...