主頁 > 知識(shí)庫 > 詳解HTTP協(xié)議簡(jiǎn)介

詳解HTTP協(xié)議簡(jiǎn)介

熱門標(biāo)簽:檢查注冊(cè)表項(xiàng) 網(wǎng)站文章發(fā)布 智能手機(jī) 呼叫中心市場(chǎng)需求 服務(wù)器配置 銀行業(yè)務(wù) 美圖手機(jī) 鐵路電話系統(tǒng)

一、簡(jiǎn)介

HTTP(HyperText Transfer Protocol, 超文本傳輸協(xié)議) 是訪問互聯(lián)網(wǎng)使用的核心通信協(xié)議,也是所有web應(yīng)用程序使用的通信協(xié)議。

消息模型:客戶端發(fā)送請(qǐng)求消息,服務(wù)器返回響應(yīng)消息。傳輸層使用具有狀態(tài)的TCP協(xié)議,但HTTP協(xié)議本身不具有狀態(tài)。

二、HTTP請(qǐng)求

HTTP請(qǐng)求消息分為消息頭和消息主體(可選),消息頭和消息主體用空白行分隔。實(shí)例:

GET / HTTP/1.1
 Host: www.cnbeta.com
 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
 Accept-Encoding: gzip, deflate
 Referer: https://www.baidu.com/s?ie=utf-8f=8rsv_bp=1rsv_idx=1ch=tn=baidubar=wd=cnbetarn=rsv_pq=917ee072000177b3rsv_t=67c29bDcYXbklwxp5LMXvSvgQrSWnKznmk4XgHbAghkt7XqGt%2BfEuP%2BMDo4
 Cookie: Hm_lvt_4216c57ef1855492a9281acd553f8a6e=1437836998; Hm_lpvt_4216c57ef1855492a9281acd553f8a6e=1437836998; _ga=GA1.2.1311393193.1437836981; bfd_s=208385984.21594488.1437837000279; tma=208385984.15187292.1437837000282.1437837000282.1437837000282.1; tmd=1.208385984.15187292.1437837000282.; bfd_g=b56c782bcb75035d00000a500201ba8455b3a6ca
 Connection: keep-alive

  說明:

1.消息頭第一行由三個(gè)以空格分隔的元素組成,分別為HTTP方法、請(qǐng)求的URL和使用的HTTP版本

HTTP方法;

1). GET:用于獲取資源,參數(shù)通過URL查下字符串方式提交給服務(wù)器,無消息主體

2). POST:用于執(zhí)行操作,參數(shù)可以通過URL查下字符串方式和消息主體提交給服務(wù)

3). HEAD:用于檢測(cè)資源是否存在,與GET類似,區(qū)別在于在響應(yīng)消息中返回的消息主體為空

4). TRACE:用于診斷,可判斷客戶端和服務(wù)器之間是否存在代理服務(wù)器,原理:服務(wù)器在響應(yīng)主體中返回收到的請(qǐng)求消息的具體內(nèi)容

5). OPTIONS:用于要求服務(wù)器報(bào)告對(duì)某一資源有效的HTTP方法,服務(wù)器常返回Allow消息頭的響應(yīng),并列出所有有效的方法

6). PUT:使用請(qǐng)求主體中的內(nèi)容向服務(wù)器上傳指定的資源

7). DELETE:用于刪除資源

8). CONNECT:

請(qǐng)求URL:用于指定請(qǐng)求的資源名稱以及查下參數(shù)

使用的HTTP版本:常用1.0和1.1版本,在1.1版本中請(qǐng)求消息中必須包含Host請(qǐng)求頭

2.其他

Host:指定請(qǐng)求訪問的主機(jī)名,當(dāng)多個(gè)web站點(diǎn)部署在同一臺(tái)主機(jī)上時(shí)需要使用Host消息頭

User-Agent:指定客戶端軟件的信息,不如瀏覽器類型和版本、操作系統(tǒng)類型和版本等

Referer:表示發(fā)出請(qǐng)求的原始URL

Cookie:提交服務(wù)器想客戶端發(fā)布的其他參數(shù)

三、HTTP 響應(yīng)

HTTP響應(yīng)消息分為消息頭和消息主體(可選),消息頭和消息主體用空白行分隔。實(shí)例:

HTTP/1.0 200 OK
 Content-Type: text/html
 Last-Modified: Sat, 25 Jul 2015 15:52:02 GMT
 Vary: Accept-Encoding
 Server: nginx/1.4.1
 Date: Sat, 25 Jul 2015 15:53:04 GMT
 ETag: "55b3b0a2-2539c"
 Age: 74
 X-Cache: HIT from RJ-ZSBGP-CDN-7410  Set-Cookie: uuid=AQAAAEx080zNuwoAJH3PdhcuX+oK943s; Path=/; Expires=Sat, 25-Jul-15 17:09:08 GMT; HttpOnly
12  !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 html xmlns="http://www.w3.org/1999/xhtml">
 head>
 meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 title>cnBeta.COM™/title>
18  body>
 Hello, Silence!
 /body>
 /html>

  說明:

1.消息頭第一行由三個(gè)空格分開的元素組成,分別表示HTTP版本、請(qǐng)求狀態(tài)碼(數(shù)字)、請(qǐng)求狀態(tài)描述
2.其他:

Server:旗標(biāo),指明使用的Web服務(wù)器軟件

Set-Cookie:設(shè)置cookie信息,在隨后向服務(wù)器發(fā)送的請(qǐng)求中由Cookie消息頭返回

Content-Type:指定消息主體類型

Content-Length:指定消息主體的字節(jié)長(zhǎng)度

URL

URL(Uniform Resource Locator,統(tǒng)一資源定位符)是web資源的唯一標(biāo)識(shí),格式:

protocol: //hostname[:port]/[path/]file[?param=value]

REST

REST(表達(dá)性狀態(tài)轉(zhuǎn)移)是分布式系統(tǒng)的一個(gè)體系架構(gòu),REST風(fēng)格URL 指在URL中使用文件路徑方式替代查詢字符串

四、HTTP消息頭

1.常用消息頭

Connection:用于指定告訴通信另一端傳輸完成后關(guān)閉TCP連接還是保持連接,HTTP/1.1中默認(rèn)為keep-alive,可設(shè)置為close

Content-Encoding:用于指定消息主體中編碼格式

Content-Length;用于指定消息主體的字節(jié)長(zhǎng)度

Content-Type:用于指定消息主體的內(nèi)容類型

Transfer-Encoding:常指定為Transfer-Encoding:chunked,用于表示邊產(chǎn)生數(shù)據(jù)邊傳輸,在最后一塊數(shù)據(jù)中0\r\n\r\n標(biāo)識(shí)數(shù)據(jù)結(jié)束,在其他塊數(shù)據(jù)中格式為\r\ncontent\r\n

2.請(qǐng)求消息頭

Accept:用于告知服務(wù)器客戶端接受哪些類型的數(shù)據(jù)

Accept-Encoding:用于告知服務(wù)器客戶端接受哪些編碼格式

Authorization:用于內(nèi)置HTTP身份驗(yàn)證,用于提交用戶名/密碼給服務(wù)器

Cookie:提交Cookie

If-Modified-Since:用于告知服務(wù)器最后一次收到請(qǐng)求資源的響應(yīng)時(shí)間,當(dāng)資源未發(fā)生變化時(shí)服務(wù)器返回狀態(tài)碼304表示使用本地緩存

If-None-Match:用于指定實(shí)體標(biāo)簽,說明主體內(nèi)容的標(biāo)識(shí)符,當(dāng)最后一次收到所請(qǐng)求的資源時(shí),瀏覽器提交服務(wù)器發(fā)布的實(shí)體標(biāo)簽。服務(wù)器可通過使用實(shí)體標(biāo)簽確定瀏覽器是否使用緩存副本

Origin:用在Ajax跨域請(qǐng)求,指定發(fā)出請(qǐng)求的域名

Referer:指定發(fā)出請(qǐng)求額原始URL

User-Agent:用于指定客戶端信息

3.響應(yīng)消息頭

Access-Control-Allow-Origin:用于指頂是否可通過跨域Ajax請(qǐng)求獲取資源

Cache-Control:用于向?yàn)g覽器發(fā)送緩存指令(no-cache)

Etag:指定實(shí)體標(biāo)簽,客戶端可在后續(xù)提交實(shí)體標(biāo)簽獲得與If-None-Match消息頭相同的資源,通知服務(wù)器瀏覽器當(dāng)前緩存保存的是哪個(gè)版本的資源

Expires:指定消息主體的有效時(shí)間,在時(shí)間內(nèi),瀏覽器可使用資源的緩存副本

Location:重定向響應(yīng),說用重定向的目標(biāo)

Pragma:向?yàn)g覽器傳送緩存指令(no-cache)

Server:告知瀏覽器服務(wù)器軟件相關(guān)信息

Set-Cookie:向?yàn)g覽器發(fā)布cookie

WWW-Authenticate:用于401狀態(tài)碼響應(yīng),提供與服務(wù)器所支持的身份驗(yàn)證類型等信息

X-Frame-Options:指示瀏覽器Frame是否及如何加載當(dāng)前響應(yīng)

五、cookie

服務(wù)器使用Set-Cookie響應(yīng)消息頭向?yàn)g覽器發(fā)布cookie信息,可以使用多個(gè)響應(yīng)消息頭發(fā)布多個(gè)cookie,瀏覽器也可使用Cookie請(qǐng)求消息頭提交使用分號(hào)分隔的多個(gè)cookie信息給服務(wù)器

cookie具有名稱、值、有效時(shí)間、有效域、有效路徑、是否為https請(qǐng)求、是否可在客戶端修改屬性,可通過Set-Cookie響應(yīng)消息頭設(shè)置,參數(shù)列表如下:

expires:指定cookie有效時(shí)間,若未指定則表示只保存在當(dāng)前瀏覽器回話中

domain:指定cookie有效域,必須和收到cookie的域相同或者是其父域

path:指定cookie的有效url路徑

secure:僅僅在https請(qǐng)求中提交cookie信息

httpOnly:用于指定在客戶端是否可以通過js修改cookie信息

六、狀態(tài)碼

狀態(tài)碼用于說明請(qǐng)求結(jié)果,分為5大類:

1XX:提供信息

2XX:請(qǐng)求成功

3XX:請(qǐng)求重定向

4XX:請(qǐng)求包含錯(cuò)誤

5XX:服務(wù)器執(zhí)行錯(cuò)誤

常見狀態(tài)碼說明:

100 Continue:當(dāng)客戶端提交一個(gè)包含主體的請(qǐng)求時(shí),將發(fā)送該響應(yīng),表示已收到請(qǐng)求消息頭,客戶端繼續(xù)發(fā)送主體

200 OK:請(qǐng)求成功,且響應(yīng)主體中包含請(qǐng)求結(jié)果

201 Created:PUT請(qǐng)求的響應(yīng)返回狀態(tài)碼,表示請(qǐng)求成功提交

301 Moved Permanently:指示瀏覽器永久重定向到Location指定的URL,客戶端使用新的URL替換原始URL

302 Found:指示瀏覽器暫時(shí)重定向到Location指定的URL,客戶端隨后的請(qǐng)求恢復(fù)到原始URL

304 Not Modified:指示瀏覽器使用緩存中保存的資源副本

400 Bad Request:表示發(fā)起無效HTTP請(qǐng)求

401 Unauthorized:服務(wù)器需要進(jìn)行HTTP身份認(rèn)證

403 Forbidden:禁止訪問請(qǐng)求資源

404 Not Found:表示資源不存在

405 Method Not Allowd:表示URL不支持請(qǐng)求方法

413 Request Entity Too Large:表示請(qǐng)求主體過長(zhǎng),服務(wù)器無法處理

413 Request URI Too Long:表示請(qǐng)求URL過長(zhǎng),服務(wù)器無法處理

500 Internal Server Error:表示服務(wù)器執(zhí)行遇到錯(cuò)誤

503 Service Unavailable:表示服務(wù)器運(yùn)行正常,但無法做出響應(yīng)

七、HTTPS

HTTP使用非加密的TCP作為傳輸機(jī)制,缺點(diǎn)在網(wǎng)絡(luò)適當(dāng)位置的攻擊者能夠截獲發(fā)送內(nèi)容,HTTPS和HTTP都屬于應(yīng)用層協(xié)議,當(dāng)HTTPS通過安全傳輸機(jī)制-安全套接層(Secure Socket Layer,SSL)傳輸數(shù)據(jù),可保護(hù)通過網(wǎng)絡(luò)傳輸數(shù)據(jù)的機(jī)密性和完整性

SSL已經(jīng)由TLS(Transport Layer Security,傳輸層安全)代替.

八、HTTP代理

代理服務(wù)器運(yùn)行在客戶端瀏覽器和web服務(wù)器之間,瀏覽器將所有請(qǐng)求提交給代理服務(wù)器,代理服務(wù)器將請(qǐng)求傳送給相關(guān)web服務(wù)器,并將響應(yīng)返回給瀏覽器

HTTP代理服務(wù)器工作機(jī)制:

當(dāng)瀏覽器向代理服務(wù)器發(fā)送HTTP請(qǐng)求時(shí),代理服務(wù)器將完整URL插入請(qǐng)求中,代理服務(wù)器將提取主機(jī)名和端口,并使用這些信息將請(qǐng)求指向正確的目標(biāo)web服務(wù)器

當(dāng)瀏覽器向代理服務(wù)器發(fā)送HTTPS請(qǐng)求時(shí),瀏覽器將代理作為TCP級(jí)中繼,瀏覽器使用CONNECT方法向代理服務(wù)器提交一個(gè)HTTP請(qǐng)求,并指定URL中的目標(biāo)主機(jī)名稱和端口號(hào),從而建立中繼。若代理允許該請(qǐng)求,則返回200狀態(tài)碼的HTTP響應(yīng),一直開放TCP鏈接,從此以后作為目標(biāo)web服務(wù)器的TCP級(jí)中繼.

九、HTTP身份認(rèn)證

HTTP具有自己的用戶身份驗(yàn)證機(jī)制,主要方案由:

Basic:在請(qǐng)求消息頭中隨每條消息以Base64編碼字符串的形式發(fā)送用戶證書

NTLM:是質(zhì)詢-響應(yīng)式機(jī)制,使用Windows NTLM協(xié)議版本

Digest:是質(zhì)詢-響應(yīng)式機(jī)制,隨同用戶證書一起使用一個(gè)隨機(jī)值的MD5校驗(yàn)和

總結(jié)

以上所述是小編給大家介紹的HTTP協(xié)議簡(jiǎn)介,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • 基于HTTP協(xié)議的一些實(shí)時(shí)數(shù)據(jù)獲取技術(shù)詳解
  • 關(guān)于Https協(xié)議和HttpClient的實(shí)現(xiàn)詳解
  • Java與Http協(xié)議的詳細(xì)介紹
  • 詳解HTTP協(xié)議(很經(jīng)典)
  • http協(xié)議進(jìn)階之Transfer-Encoding和HttpCore實(shí)現(xiàn)詳解
  • 網(wǎng)絡(luò)傳輸協(xié)議(http協(xié)議)
  • http協(xié)議詳解(超詳細(xì))
  • 詳細(xì)HTTP協(xié)議的前世今生

標(biāo)簽:紅河 樂山 長(zhǎng)治 河南 沈陽 滄州 上海 新疆

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解HTTP協(xié)議簡(jiǎn)介》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266