在 http報文 一章中,我們介紹了http協議由 行、頭、體組成。而本章,介紹 「頭」
如果你寫了乙個小爬蟲,但抓出來的結果和想象的不同(例如介面樣式,返回內容和人工看有差異,或者是需要登入),你可以更改你傳送的http請求的header部分,將合法的user-agent、cookie等添上,能解決大多數此類問題,因為http是無狀態並且不安全的協議,所以這些小手段能夠生效。
請求首部就是由客戶端,放在http請求頭中傳送給伺服器的部分。
簡稱 ua,它是乙個特殊字串頭,使得伺服器能夠識別客戶使用的作業系統及版本、cpu 型別、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器外掛程式等。從而為來自不同平台/瀏覽器的使用者,提供最適合的響應內容。(例如,移動使用者不應該收到pc網頁的響應,就是由user agent來做識別的)
它表示使用者是從哪個網頁發起的請求。通常用來做防盜煉。例如在伺服器中解析請求判斷referer,如果非白名單站點發過來的請求,則返回乙個防盜煉的給請求方。
由於http的無狀態性質,所以需要在每次請求時都要帶上「我是誰」的資訊發給伺服器。而cookie就做了這個事,同時,cookie也可以讓伺服器儲存部分資訊給客戶端,就像是:「你來我這裡,走的時候帶個會員卡,下次直接帶上卡過來」同時,cookie中能儲存使用者的身份標識,在下次訪問時,服務端可以根據身份標識,提供個性化的內容。
響應首部,就是由伺服器,放在http響應頭中傳送給客戶端的部分。
這裡和請求首部的 cookie 相對應,正因為服務端在這裡向客戶端傳送了set-cookie 指令,所以客戶端才知道要把哪些內容作為cookie儲存起來,下次請求時再帶上。
location一般配合3xx狀態碼(詳見:http狀態碼) 用於重定向,使得客戶端能正確地去找到請求實體。
服務端告知客戶端,本次響應內容的長度,如果返回的長度大於告知的長度,則超出的那部分會被丟棄。如果返回的長度小於告知的長度,則客戶端會一直等待(因為客戶端認為服務端的響應還沒有傳送完畢)。所以,乙個準確的conetnt-length是十分必要的。
HTTP 報文頭摘錄
http 報文頭摘錄 首部名稱 請求 響應 主體 allow authorization content encoding content length content type date expires from if modified since last modified location m...
前端http協議快取初解
toc 使用者獲取網路資源,需要通過非常長的網路去伺服器上請求資源,另外服務端為了應對大量的使用者請求而不斷的提公升硬體效能與頻寬。這對使用者與服務端都非常的不友好。而快取就是為了解決使用者請求速度與釋放伺服器壓力而生的。為什麼我會寫http快取,因為下面介紹的快取都是通過http定義的。瀏覽器快取...
http請求 請求方法與報文頭格式
乙個http請求報文由請求行 request line 請求頭部 header 空行和請求資料4個部分組成。1 請求行 請求行由請求方法字段 url欄位和http協議版本欄位3個字段組成,它們用空格分隔。例如,get index.html http 1.1http協議的請求方法有get post h...