分析乙個http頭

2021-06-21 01:18:21 字數 4348 閱讀 7546

http了解一些,但總是沒怎麼去注意。這次就把http的頭弄的大概清楚了一些。

上面這張圖是chrome裡截出來的,是經過整理的http頭,把各種資訊都清楚的列了出來。

乙個請求響應有兩個頭。

request headers 是指瀏覽器發出的請求頭。

response header 是指伺服器發回的響應頭。

最上面三行是chrome自己提出來的,前兩行屬於request headers,最後一行屬於response header。

逐條解釋下:

request url:

請求的url,當前請求的是一張資源。

主機的位置是8.su.bdimg.com,ping一下可以得到ip位址140.207.195.19,是上海市聯通

request method:get

請求的方法,當前是get。

這個欄位是大小寫敏感的,包括options、get、head、post、put、delete、 trace。

方法get和head應該被所有的通用web伺服器支援,其他所有方法的實現是可選的。

webservice標準rest,乙個請求就是請求乙個資源,而用http協議中自帶的方法定義請求資源的狀態(get、post、put、delete)。

status code:200 ok

http狀態碼,表明這個請求響應的狀態,是伺服器返回來的,也就是8.su.bdimg.com返回的。

乙個數字定義響應的類別,後兩個數字沒有分類的作用。第乙個數字可能取5個不同的值:

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

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

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

4xx:客戶端錯誤,客戶請求包含語法錯誤或者是不能正確執行

5xx:服務端錯誤,伺服器不能正確執行乙個正確的請求

accept:image/webp,*/*;q=0.8

告訴伺服器自己接受什麼介質型別(minetype),*/* 表示任何型別,type/* 表示該型別下的所有子型別,type/sub-type。

image/webp是指一種webp的格式,是google弄出來的。這種minetype不是官方定義的。

在質量相同的情況下,webp格式影象的體積要比jpeg格式影象小40%。美中不足的是,webp格式影象的編碼時間「比jpeg格式影象長8倍」。

q是權重,*/*的權重是0.8,而image/webp的權重是預設值1.(q為0時,不接受這種型別)

這個句子的意思是我這個瀏覽器優先接受webp格式的,但是如果沒有這種,那給我隨便什麼東西。

accept-encoding:gzip,deflate,sdch

瀏覽器可以解碼的編碼方法(壓縮方法)

gzip是 gnu zip 的縮寫,它是乙個 gnu 自由軟體的檔案壓縮程式,也經常用來表示 gzip 這種檔案格式。

deflate是同時使用了 lz77 演算法與哈夫曼編碼(huffman coding)的乙個無損資料壓縮演算法。

sdch是chrome自己定義的壓縮方法。

這些編碼方法,都是為了減少傳輸的資料,需要伺服器的支援。

假設8.su.bdimg.com伺服器是nginx,可以開啟gzip壓縮功能,那麼當我們的chrome傳送這個請求時,伺服器會先將png用gzip演算法壓縮,再發到chrome。然後chrome解壓縮,顯示出來。

accept-language:zh-cn,zh;q=0.8

瀏覽器支援的語言,中文簡體和中文。優先支援中文。(上面解釋過了q是權重的意思,zh-cn權重是1,zh權重是0.8)。

host:8.su.bdimg.com

主機是8.su.bdimg.com,這個可以從request url裡面看出來。

proxy-connection:keep-alive

客戶端與伺服器連線的型別。keep-alive和close兩種,可以理解為長連線和短連線。其實是對應tcp的長連線和短連線。

http是乙個無狀態的面向連線的協議。是在tcp上的應用層協議。

在http/1.0中預設是close,短連線。就是每次請求完畢都立即關閉連線。

從 http/1.1起,預設使用keep-alive,長連線。就是每次請求完畢仍然保持一段時間連線。

referer:

最複雜的乙個字段。user-agent每個瀏覽器都不同,但都類似。

mozilla/5.0基本上所有的瀏覽器都以mozilla開頭,表明相容mozilla的**,歷史問題,因為以前mozilla是老大。

windows nt 6.1  win7的核心,表明我的電腦是win7系統

wow64  64位機器,表明我的電腦是64位

chrome/31.0.1650.63 當前chrome的版本

accept-ranges:bytes

這個字段說明伺服器是否支援range(是否支援斷點續傳功能),如果支援,則返回accept-ranges: bytes,如果不支援,則返回accept-ranges: none。

cache-control:max-age=15552000

cache-control是用於控制網頁的快取,跟expires同個意思。

max-age單位是秒,就是從現在開始到15552000之間都是有用的,這張都是被快取下來的。

cache-control是http1.1才有的,不適用與http1.0,而expires既適用於http1.0,也適用於http1.1。

ctrl+f5時快取無效,都會重新獲取。

有以下幾種取值:

max-age:(只接受 age 值小於 max-age 值,並且沒有過期的物件)

max-stale:(可以接受過去的物件,但是過期時間必須小於 max-stale 值)

min-fresh:(接受其新鮮生命期大於其當前 age 跟 min-fresh 值之和的快取物件)

響應:public(可以用 cached 內容回應任何使用者)

private(只能用快取內容回應先前請求該內容的那個使用者)

no-cache(可以快取,但是只有在跟web伺服器驗證了其有效後,才能返回給客戶端)

connection:keep-alive

同proxy-connection:keep-alive。伺服器和瀏覽器都需要支援keep-alive才可以。

content-length:322

伺服器告訴瀏覽器自己響應的物件的長度。不包含http頭的大小。這裡就是指的大小,7183.png就是322b大小。

content-type:image/png

伺服器返回的資料的minetype,是符合accept要求的。一張png,是官方定義的資源型別。

date:tue, 18 mar 2014 07:06:26 gmt

資訊傳送的時間,gmt格林威治時間。

etag:"371935355"

資源的乙個標識,每次資源被修改,這個值會改變,可以用於表明資源是否被修改。

expires:sat, 06 sep 2014 15:19:12 gmt

過期時間,這張在這個時間之前會被快取著。

last-modified:tue, 14 jan 2014 07:16:10 gmt

在瀏覽器第一次請求某乙個url時,伺服器端的返回狀態會是200,內容是請求的資源,同時將last-modified屬性標記此檔案在服務期端最後被修改的時間。

客戶端第二次請求此url時,根據 http 協議的規定,瀏覽器會向伺服器傳送 if-modified-since 報頭,詢問該時間之後檔案是否有被修改過:

tue, 14 jan 2014 07:16:10 gmt

如果伺服器端的資源沒有變化,則自動返回 http 304 (not changed.)狀態碼,內容為空,這樣就節省了傳輸資料量。當伺服器端**發生改變或者重啟伺服器時,則重新發出資源,返回和第一次請求時類似。從而保證不向客戶端重**出資源,也保證當伺服器有變化時,客戶端能夠得到最新的資源。

server:jsp2/1.0.24

伺服器的型別,是jsp2

搭建乙個HTTP環境

1.我的電腦找到 路徑 c windows system32 drivers etc 控制面板 網路 更改介面卡,乙太網屬性,3.設定top ipv4屬性 4.快速搭建http伺服器 開啟powershell,輸入python m httpserver 80 6.開啟cmd,輸入python2 m ...

http請求和響應頭格式分析

一.響應格式 下面是通過firebug獲取的響應頭資料資訊 響應頭資訊 原始頭資訊 響應格式主要有響應行,響應頭,響應體組成 響應行響應頭 2.content length 表示內容長度。只有當瀏覽器使用持久http連線時才需要這個資料。如果你想要利用持久連線的優勢,可以把輸出文件寫入bytearr...

乙個後門分析

檔案資訊 殼資訊 無殼 編譯器 vs2010 1.檔案執行後,會首先判斷檔案是否在c windows system32目錄下,如果沒有則拷貝自身到這個目錄下,並將自身設為服務程序,隨開機啟動 接著會啟動這個服務,並在臨時資料夾建立乙個.bat檔案並執行。這個檔案主要是刪除原有檔案 服務啟動後會嘗試連...