Http 1.1協議


HTTP是hypertext transfer protocol(超文本傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器與WEB服務器之間數據交換的過程。

 

1.Http1.0和1.1

Http1.0:請求一次,連接自動斷開。

Http1.1:一次連接,可以發起多次請求。

 

2.在windows中使用telnet發起Http請求

telnet localhost 8080   //連上服務器

GET /abc/1.html HTTP/1.1 // 編寫HTTP請求

Host: // 輸入服務器名

 

3.HTTP請求的格式

【一個請求行】換行

【若干個請求頭】換行

 換行

【post消息】

例如:

GET /books/abc.html HTTP/1.1    

Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:uuid_tt_dd=1603386812225897869_20161020; __message_sys_msg_id=0; __message_gu_msg_id=0; __message_cnel_msg_id=0; __message_district_code=000000; __message_in_school=0; dc_tos=ofbqa0; dc_session_id=1476929736226
Host:dc.csdn.net
Referer:http://www.csdn.net/article/2014-09-17/2821721
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

// 說明

 //第一行是請求行 格式為:【請求方式  資源URL  HTTP版本號】

// 請求方式共有7種,常用的是GET和POST兩種,GET常用來從服務器得到信息,POST主要用來向服務器提交信息

// GET請求提交給服務器的信息被寫在URL的“?“后面,使用“&”分隔多個鍵值對,不具有保密性,通常該信息容量最大不超過1K

// POST請求發給服務器端的信息無容量限制,該信息被放在請求體里發給服務器。POST請求通常通過form表單提交。

//第二行開始是多條請求頭信息

 

2.常用請求頭

Accept:客戶支持的數據類型,全支持是"*/*",部分支持比如"text/html image"表示支持HTML和圖片

Accept-Charset:客戶機采用的編碼方式

Accept-Language:客戶機語言環境,用來提示服務器進行正確的國際化,如"zh-cn"表示中文中國地區

Accept-Encoding:客戶端支持的壓縮格式,服務器端可根據該信息,將響應內容壓縮至該格式進行傳輸

Host:請求哪個主機的資源

If-Modified-Since:如果服務器端相應資源的最后修改日期比這個日期新,就發送新的相應,否則就讀取客戶機瀏覽器緩存

Referer:表明當前的請求是從哪個頁面發送出來的,用來支持服務器端做防盜鏈工作。

User-Agent:客戶機的軟件環境,如瀏覽器品牌及版本,操作系統品牌及版本等

Cookie:Cookie信息

Connection:用來告訴服務器端,當響應完成以后連接是關閉還是保持。常用的值兩個:close/Keep-Alive

Date:客戶機的時間

 

5.響應的格式

【一行狀態行】換行

【若干個響應頭】換行

 換行

【實體內容】

舉例:

HTTP/1.1 200 OK 

Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:GET,POST
Access-Control-Allow-Origin:http://so.csdn.net
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/plain;charset=UTF-8
Date:Thu, 20 Oct 2016 02:15:38 GMT
Expires:Thu, 01-Jan-1970 00:00:00 GMT
Keep-Alive:timeout=20
Server:openresty
Set-Cookie:dc_session_id=1476929736226;Path=/;Domain=csdn.net;Expires=Thu, 20-Oct-2016 02:45:38 GMT
Transfer-Encoding:chunked
Vary:Accept-Encoding

//說明

// 第一行是狀態行  格式為【HTTP版本號 狀態碼 原因敘述】

// 狀態碼用於表示服務器對請求的處理結果,它是一個三位的十進制數,響應狀態碼分為5類

// 100~199:表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程。不常見。

// 200~299:表示成功接收請求並已完成整個處理過程,常用200

// 300~399:為完成請求,客戶機需要繼續細化請求。例如:請求的資源已經移動到一個新地址。常用302、304和307

                    // 302:請求被服務器重定向到新的URL,與響應頭中的Location頭配合使用

                    // 307和304:服務器要求客戶機去拿緩存

// 400~499:客戶端的請求有錯誤。常用404、403。404表示請求的資源不存在。403表示用戶沒有訪問該資源的權限。

// 500~599:服務器端有錯誤產生,常用500。

 

6.常用響應頭

Location:客戶發來的請求,服務器端告訴客戶端,你要的東西我沒有,你可以去找某某,這個過程術語叫做請求重定向,而Location就是這個某某。

Server:服務器的類型

Content-Encoding:數據壓縮格式

Content-Length:數據長度

Content-type:數據類型

Last-Modified:資源緩存時間

Refresh:連命令瀏覽器多長時間刷新一次

Content-Disposition:是否以下載的方式打開資源

Transfer-Encoding:數據傳送格式

ETag:緩存內容的頭

Expires:緩存過期時間

Cache-Control:no-cache是否要緩存

Pragma:no-cache是否需要緩存

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM