游客发表

深入了解http協議

发帖时间:2026-09-03 15:47:48

由於傳播 、深入利用此文所提供的深入信息而造成的任何直接或者間接的後果及損失 ,均由使用者本人負責,深入雷神眾測以及文章作家不為此承擔責任任何責任 。深入

雷神眾測擁有對此文章的深入修改和解釋權。如欲轉載或傳播此文章,深入重生细胞游戏辅助必須保證此文章的深入完整性 ,包括版權聲明等全部內容 。深入未經雷神眾測允許 ,深入不得任意修改或者增減此文章內容 ,深入不得以任何方式將其用於商業目的深入 。

No.2

   

   

HTTP簡介

Hypertext Transfer Protocol ,深入超⽂本傳輸協議,深入和 HTML (Hypertext Markup Language 超⽂本標 記語⾔) ⼀起誕⽣,深入⽤於在⽹絡上請求和傳輸 HTML 內容。深入
超⽂本,即「擴展型⽂本」  ,指的是 HTML 中可以有鏈向別的⽂本的鏈接(hyperlink)。

No.3

   

   

HTTP籌備原理

  1. 用戶輸入地址後回車或點擊鏈接
  2. 校驗器拚裝 HTTP 報文並發送請求給服務器
  3. 服務器籌備理請求後發送感謝報文給校驗器
  4. 校驗器解析感謝報文並使用渲染引擎顯示到界麵
No.4

   

   

HTTP請求報文

請求報文具體格式 :

4.1

請求行信息

Request Method 請求計劃

計劃

作用

GET

請求得到由 Request-URI 所標識的資源

POST

請求服務器接收在請求中封裝的實體 ,並將其作為由 Request-Line 中的 Request-URI 所標識的資源的一部分

HEAD

請求得到由 Request-URI 所標識的資源的感謝消息報頭

PUT

請求服務器存儲一個資源,並用 Request-URI 作為其標識符

DELETE

請求服務器刪除由 Request-URI 所標識的資源

TRACE

請求服務器回送到的請求信息,主要用於測試或診斷

CONNECT

HTTP/1.1 協議中預留給能夠將接合改為管道方式的重生细胞辅助软件代理服務器 。

OPTIONS

請求查詢服務器的性能,或者查詢與資源相關的選項和需求

PATCH

是對 PUT 計劃的補充,用來對已知資源鋪開局部更新  。

GET

• ⽤於得到資源

• 對服務器數據不進⾏修改

• 不發送 Body

GET /users/1 HTTP/1.1
Host: api.github.com

POST

• 用於增補或修改資源

• 發送給服務器的內容寫在Body裏麵

POST /users HTTP/1.1
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
name=rengwuxian&gender=male

請求計劃GET和POST的區別

PUT

• 用於修改資源

• 發送給服務器的內容寫在Body裏麵

PUT /users/1 HTTP/1.1
Host: api.github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
gender=female

DELETE

• 用於刪除資源

• 不發送 Body

DELETE /users/1 HTTP/1.1
Host: api.github.com

HEAD

HEAD 計劃與 GET 計劃幾乎是相同的,它們的區別在於 HEAD 計劃隻是請求消息報頭,而不是完整的內容 。對於 HEAD 請求的感謝部分來會談 ,它的 HTTP 頭部中包含的信息與通過 GET 請求所得到的信息是相同的 。利用這個計劃 ,不必傳輸整個資源內容,就可以得到 Request-URI 所標識的資源的信息。這個計劃通常被用於測試超鏈接的有效性,是否可以訪問 ,以及最近是否更新 。

 

要注意的是 ,在 HTML 文檔中 ,書寫 get 和 post,大小寫都可以 ,但在 HTTP 協議中的 GET 和 POST 隻能是大寫形式 。

 

協議版本

協議版本的格式為:HTTP / 主版本號次版本號 ,常用的重生细胞能开挂吗有HTTP / 1.0和HTTP / 1.1

 

HTTP1.0 和HTTP1.1的區別:

1)在HTTP1.0協議中 ,客戶端與網絡服務器建立接合後 ,隻能得到一個網絡資源 。

2)HTTP1.1 協議,允許客戶端與網絡服務器建立接合後,在一個接合上得到多個網絡資源。(常用)

4.2

Headers請求頭信息

每個頭域由一個域名,冒號(:)和域值三部分組成 。域名是大小寫無關的,域值前可以增補任何數量的空格符,頭域可以被擴展為多行 ,在每行起始處,使用至少一個空格或製表符 。

 

HTTP最常見的請求頭如下:

Transport 頭域

Connection:
作用:表示是否需要持久接合。
如果服務器校驗到這裏的值為“Keep-Alive”,或者校驗到請求使用的是HTTP 1.1(HTTP 1.1默認鋪開持久接合),它就可以利用持久接合的優點,當頁麵包含多個元素時(例如Applet,圖片) ,顯著地裁減下載所需要的時間。要實現這一點,服務器需要在應答中發送一個Content-Length頭 ,最簡易的手机版重生细胞开挂實現計劃是 :先把內容寫入 ByteArrayOutputStream ,然後在正式寫出內容之前計算它的大小;
例如: Connection: keep-alive   當一個網頁打開落成後 ,客戶端和服務器之間用於傳輸HTTP數據的TCP接合不會隔絕,如果客戶端再次訪問這個服務器上的  網頁 ,會綿延使用這一條已經建立的接合
例如 :Connection: close  代表一個Request落成後 ,客戶端和服務器之間用於傳輸HTTP數據的TCP接合會隔絕,  當客戶端再次發送Request  ,需要重新建立TCP接合 。

Host:(發送請求時 ,該報文頭域是必需的)
Host請求報文頭域主要用於指定被請求資源的Internet主機和端口號,它通常從HTTP URL中提取出來的。
例如 :http://;localhost/index.html
校驗器發送的請求消息中  ,就會包含Host請求報頭域 ,如下 :
Host:localhost
此處使用缺省端口號80 ,若指定了端口號8080,則變成:Host :localhost:8080

Client 頭域

Accept :
作用 :校驗器可以收受的媒體類型(MIME類型),
例如 :Accept: text/html  代表校驗器可以收受服務器回發的類型為 text/html  也就是我們常會談的html文檔, 如果服務器無法返回text/html類型的數據,服務器應該返回一個406錯誤(non acceptable)。
通配符 * 代表任意類型 。例如  Accept: */*  代表校驗器可以籌備所有類型 ,(一般校驗器發給服務器都是發這個)

Accept-Encoding  :
作用 :校驗器申明自己接收的編碼計劃,通常指定縮減規模計劃 ,是重生细胞手机版修改器否擁穿著縮減規模,擁穿著什麽縮減規模計劃(gzip,deflate) ,(注意  :這不是隻字符編碼);
例如 :Accept-Encoding: gzip, deflate。Server能夠向擁穿著gzip/deflate的校驗器返回經gzip或者deflate編碼的HTML頁麵 。許多情形下這可以裁減5到10倍的下載時間,也節省帶寬 。

Accept-Language :
作用:校驗器申明自己接收的語言 。
語言跟字符集的區別 :中文是語言 ,中文有多種字符集 ,比如big5 ,gb2312,gbk等等;
例如:Accept-Language:zh-cn  。如果請求消息中沒有設置這個報頭域,服務器假定客戶端對各種語言都可以收受。

User-Agent :
作用:告訴HTTP服務器, 客戶端使用的操作係統和校驗器的名稱和版本.
我們上網登陸論壇的時候,往往會校驗到一些歡迎信息,其中列出了你的操作係統的名稱和版本,你所使用的校驗器的名稱和版本,這往往讓很多人感到很神奇 ,實際上, 服務器應用程序就是從User-Agent這個請求報頭域中得到到這些信息User-Agent請求報頭域允許客戶端將它的操作係統、校驗器和其它屬性告訴服務器 。
例如  :User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)

Accept-Charset :
作用:校驗器申明自己接收的字符集,這就是本文前麵介紹的各種字符集和字符編碼 ,如gb2312,utf-8(通常我們會談Charset包括了相應的字符編碼計劃);
例如 :Accept-Charset:iso-8859-1,gb2312.如果在請求消息中沒有設置這個域  ,缺省是任何字符集都可以收受。

Authorization:授權信息,通常裸露在對服務器發送的WWW-Authenticate頭的應答中;
Authorization請求報頭域主要用於證明客戶端有權查校驗某個資源。當校驗器訪問一個頁麵時,如果收到服務器的感謝代碼為401(未授權),可以發送一個包含Authorization請求報頭域的請求 ,要求服務器對其鋪開驗證。

Cookie/Login 頭域

Cookie:
作用:最重要的header, 將cookie的值發送給HTTP 服務器

Entity頭域

Content-Length
作用:發送給HTTP服務器數據的長度 。即請求消息正文的長度;
例如 :Content-Length: 38

Content-Type:
作用:指定Body的類型。
例如 :Content-Type: application/x-www-form-urlencoded
Content-Type主要有四類:
1.text/html
請求Web頁麵時返回感謝的類型,Body中返回html文本 。
2.x-www-form-urlencoded
Web頁麵純文本表單的提交方式 。
3.multitype/form-data
Web頁麵含有二進製文件時的提交方式。
4.application/json,image/jpeg,application/zip...
單項內容(文本或非文本都可以) ,用於Web Api的感謝或者POST/PUT的請求。

Miscellaneous 頭域

Referer:
作用 :提供了Request的上下文信息的服務器,告訴服務器我是從哪個鏈接過來的,比如從我主頁上鏈接到一個摯友那裏 , 他的服務器就能夠從HTTP Referer中統計出每天有多少用戶點擊我主頁上的鏈接訪問他的網站。
例如: Referer:http://translate.google.cn/?hl=zh-cn&tab=wT

Cache 頭域

If-Modified-Since:
作用:把校驗器端緩存頁麵的最後修改時間發送到服務器去,服務器會把這個時間與服務器上實際文件的最後修改時間鋪開對比。如果時間一致 ,那麽返回304 ,客戶端就直接使用本地緩存文件。如果時間不一致 ,就會返回200和新的文件內容。客戶端接到之後,會丟棄舊文件,把新文件緩存起來,並顯示在校驗器中。
例如:If-Modified-Since: Thu, 09 Feb 2012 09:07:57 GMT。

If-None-Match :
作用: If-None-Match和ETag一起籌備 ,籌備原理是在HTTP Response中增補ETag信息 。當用戶再次請求該資源時 ,將在HTTP Request 中加入If-None-Match信息(ETag的值) 。如果服務器驗證資源的ETag沒有改變(該資源沒有更新),將返回一個304狀態告訴客戶端使用本地緩存文件 。否則將返回200狀態和新的資源和Etag.  使用這樣的機製將晉升網站的性能
例如: If-None-Match: "03f2b33c0bfcc1:0"

Pragma :
作用 :防止頁麵被緩存, 在HTTP/1.1版本中 ,它和Cache-Control:no-cache作用一模一樣
Pargma隻有一個用法, 例如 :Pragma: no-cache
注意: 在HTTP/1.0版本中 ,隻實現了Pragema:no-cache, 沒有實現Cache-Control

Cache-Control :
作用: 這個是非常重要的規則。這個用來指定Response-Request遵循的緩存機製 。各個指令含義如下
Cache-Control:Public   可以被任何緩存所緩存()
Cache-Control:Private     內容隻緩存到私有緩存中
Cache-Control:no-cache  所有內容都不會被緩存

No.5

   

   

HTTP感謝報文

感謝報文具體格式:

5.1

Status Code 狀態碼

HTTP狀態碼分類

HTTP狀態碼列表:

5.2

感謝頭信息

Cache頭域

Date:
作用 :裸露消息的具體時間和日期 ,即當前的GMT時間 。
例如: Date: Sun, 17 Mar 2013 08:12:54 GMT

Expires :
作用: 校驗器會在指定過期時間內使用本地緩存,指明應該在什麽時候認為文檔已經過期,從而不再緩存它。
例如: Expires: Thu, 19 Nov 1981 08:52:00 GMT

Vary
作用 :指示不可緩存的請求頭列表;
例如: Vary: Accept-Encoding

Cookie/Login 頭域

P3P
作用: 用於跨域設置Cookie, 這樣可以解決iframe跨域訪問cookie的尷尬
例如: P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR

Set-Cookie
作用:非常重要的header, 用於把cookie 發送到客戶端校驗器 , 每一個寫入cookie城市裸露一個Set-Cookie.
例如: Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3;

 

path=/
作用: 用於跨域設置Cookie, 這樣可以解決iframe跨域訪問cookie的尷尬
例如: P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR

Set-Cookie
作用 :非常重要的header, 用於把cookie 發送到客戶端校驗器  , 每一個寫入cookie城市裸露一個Set-Cookie.
例如: Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/

Entity實體頭域

實體內容的屬性 ,包括實體信息類型 ,長度 ,縮減規模計劃,最後一次修改時間,數據有效性等。

ETag  :
作用:  和If-None-Match 配合使用 。(實例請校驗上節中If-None-Match的實例)
例如: ETag: "03f2b33c0bfcc1:0"

Last-Modified:
作用:用於指示資源的最後修改日期和時間  。(實例請校驗上節的If-Modified-Since的實例)
例如: Last-Modified: Wed, 21 Dec 2011 09:09:10 GMT

Content-Type:
作用 :WEB服務器告訴校驗器自己感謝的對象的類型和字符集,
例如:
Content-Type: text/html; charset=utf-8
Content-Type:text/html;charset=GB2312
Content-Type: image/jpeg

Content-Length:
指明實體正文的長度 ,以字節方式存儲的十進製數字來表示 。在數據下行的過程中 ,Content-Length的方式要預先在服務器中緩存所有數據  ,然後所有數據再一股腦兒地發給客戶端。
例如: Content-Length: 19847

Content-Encoding :
作用 :文檔的編碼(Encode)計劃 。一般是縮減規模方式 。
WEB服務器表明自己使用了什麽縮減規模計劃(gzip ,deflate)縮減規模感謝中的對象 。利用gzip縮減規模文檔能夠顯著地裁減HTML文檔的下載時間 。
例如 :Content-Encoding :gzip

Content-Language:
作用 :WEB服務器告訴校驗器自己感謝的對象的語言者
例如 :Content-Language:da

Miscellaneous 頭域

Server  :
作用:指明HTTP服務器的軟件信息
例如:Apache/2.2.8 (Win32) PHP/5.2.5

X-Powered-By :
作用 :表示網站是用什麽技術開發的
例如 :X-Powered-By: PHP/5.2.5

Transport頭域

Location:
作用 :用於重定向一個新的位置 , 包含新的URL地址
實例請校驗304狀態實例

5.3

感謝正文

感謝正文就是服務器返回的資源的內容,感謝頭和正文之間也必須用空行分隔。

No.6

   

   

校驗器緩存

校驗器緩存 :包括頁麵html緩存和圖片js ,css等資源的緩存。校驗器緩存是基於把頁麵信息保存到用戶本地電腦硬盤裏。在客戶端或中間網絡節點緩存數據,下滑從服務器取數據的頻率,以晉升網絡性能。

 

緩存的優點 :

1)服務器感謝更快 :因為請求從緩存服務器(離客戶端更近)而不是源服務器被相應 ,這個過程耗時更少,讓服務器校驗上去感謝更快  。

2)裁減網絡帶寬消耗 :當副本被重用時會減低客戶端的帶寬消耗;客戶可以節省帶寬費用 ,控製帶寬的需求的增長並更易於管理 。

 

緩存籌備原理:

頁麵緩存狀態是由http header決定的 ,一個校驗器請求信息 ,一個是服務器感謝信息。主要包括Pragma: no-cache、Cache-Control 、 Expires 、 Last-Modified、If-Modified-Since 。其中Pragma: no-cache由HTTP/1.0規定 ,Cache-Control由HTTP/1.1規定。

內容校驗完了

    热门排行

    友情链接