HTTP 請求和響應格式
a) 通用頭(general-header):
Cache-Control:客戶端希望服務端如何快取自己的請求資料,如"Cache-Control: no-cache","Cache-Control: max-age=0";
Connection:客戶端是否希望與服務端之間保持長連線,如"Connection: close", "Connection: keep-alive";
Date:只有當請求方法為POST或PUT方法時客戶端才可能會有些欄位;
Pragma:包含了客戶端一些特殊請求資訊,如 "Pragma: no-cache" 客戶端希望代理或應用伺服器不應快取與該請求相關的結果資料;
Via:一般用在代理閘道器嚮應用伺服器傳送的請求頭中,表明該來自客戶端的請求經過了閘道器代理,
格式為:"Via: 請求協議版本 閘道器標識 [其它資訊] ",
如 :" Via: 1.1 webcache_250_199.hexun.com:80 (squid)"
b) 請求頭(request-header):
Accept: 表明客戶同端可接受的請求迴應的媒體型別範圍列表。星號“*”用於按範圍將型別分組,用“*/*”指示可接受全部型別;用“type/*”指示可接受 type型別的所有子型別,如“ Accept: image/gif, image/jpeg, */*”;
Accept-Charset:客戶端所能識別的字符集編碼格式,格式:“Accept-Charset: 字符集1[:權重],字符集2[:權重]”,如:“ Accept-Charset: iso-8859-5, unicode-1-1;q=0.8”;
Accept-Language:客戶端所能識別的語言,格式:“Accept-Language: 語言1[:權重],語言2[:權重]”,如:” Accept-Language: zh, en;q=0.7”;
Host:客戶請求的主機域名或主機IP,格式:“Host: 域名或IP[:埠號]”,如:“Host: www.hexun.com:80“,請求行中若有HTTP/1.1則必須有該請求頭;
User-Agent:表明使用者所使用的瀏覽器標識,主要用於統計的目的;
Referer:指明該請求是從哪個關聯連線而來;
Accept-Encoding:客戶端所能識別的編碼壓縮格式,如:“Accept-Encoding: gzip, deflate”;
If- Modified-Since:該欄位與客戶端快取相關,客戶端所訪問的URL自該指定日期以來在服務端是否被修改過,如果修改過則服務端返回新的修改後 的資訊,如果未修改過則伺服器返回304表明此請求所指URL未曾修改過,如:“If-Modified-Since: Fri, 2 Sep 2006 19:37:36 GMT”;
If-None-Match:該欄位與客戶端快取相關,客戶端傳送URL請求的同時傳送該欄位及標識,如 果服務端的標識與客戶端的標識一致,則返回304表明此URL未修改過,如果不一致則服務端返回完整的資料資訊,如:“If-None-Match: 0f0a893aad8c61:253, 0f0a893aad8c61:252, 0f0a893aad8c61:251”;
Cookie:為擴充套件欄位,儲存於客戶端,向同一域名的服務端傳送屬於該域的cookie,如:“Cookie: MailUserName=whouse”;
c) 實體頭(entity-header): (此類頭存在時要求有資料體)
Content-Encoding:客戶端所能識別的編碼壓縮格式,如:“Content-Encoding: gzip, deflate”;
Content-Length:客戶端以POST方法上傳資料時資料體部分的內容長度,如:“ Content-Length: 24”;
Content- Type:客戶端傳送的資料體的內容型別,如:“Content-Type: application/x-www-form-urlencoded”為以普通的POST方法傳送的資料;“Content-Type: multipart/form-data; boundary=---------------------------5169208281820”,則表明資料體由多部分組成,分隔符為 “-----------------------------5169208281820”;
響應格式
a) 通用頭(general-header):
Cache- Control:服務端要求中間代理及客戶端如何快取自己響應的資料,如“Cache-Control: no-cache”,如:“Cache-Control: private” 不希望被快取,“Cache-Control: public” 可以被快取;
Connection:服務端是否希望與客戶端之間保持長連線,如“Connection: close”, “Connection: keep-alive”;
Date:只有當請求方法為POST或PUT方法時客戶端才可能會有些欄位;
Pragma:包含了服務端一些特殊響應資訊,如 “Pragma: no-cache” 服務端希望代理或客戶端不應快取結果資料;
Transfer-Encoding:服務端向客戶端傳輸資料所採用的傳輸模式(僅在HTTP1.1中出現),如:“Transfer-Encoding: chunked”,注:該欄位的優先順序要高於“Content-Length” 欄位的優先順序;
b)響應頭(response-header):
Accept-Ranges:表明服務端接收的資料單位,如:“Accept-Ranges: bytes”, ;
Location:服務端向客戶端返回此資訊以使客戶端進行重定向,如:“Location: http://www.hexun.com”;
Server:服務端返回的用於標識自己的一些資訊,如:“ Server: Microsoft-IIS/6.0”;
ETag:服務端返回的響應資料的標識欄位,客戶端可根據此欄位的值向伺服器傳送某URL是否更新的資訊;
c)實體頭(entity-header): (此類頭存在時要求有資料體)
Content-Encoding:服務端所響應資料的編碼格式,如:“Content-Encoding: gzip”;
Content-Length:服務端所返回資料的資料體部分的內容長度,如:“ Content-Length: 24”;
Content-Type:服務端所返回的資料體的內容型別,如:“Content-Type: text/html; charset=gb2312” ;
Set-Cookie:服務端返回給客戶端的cookie資料,如:“ Set-Cookie: ASP.NET_SessionId=icnh2ku2dqlmkciyobgvzl55; path=/”
Range Content-Range
HTTP頭中一般斷點下載時才用到Range和Content-Range實體頭,
Range使用者請求頭中,指定第一個位元組的位置和最後一個位元組的位置,如(Range:200-300)
Content-Range用於響應頭
請求下載整個檔案:
***********************************
GET /test.rar HTTP/1.1
Connection: close
Host: 116.1.219.219
Range: bytes=0-100
***********************************
Range頭域可以請求實體的一個或者多個子範圍,Range的值為0表示第一個位元組,也就是Range計算位元組數是從0開始的
表示頭500個位元組:bytes=0-499
表示第二個500位元組:bytes=500-999
表示最後500個位元組:bytes=-500
表示500位元組以後的範圍:bytes=500-
第一個和最後一個位元組:bytes=0-0,-1
同時指定幾個範圍:bytes=500-600,601-999
一般正常回應
***********************************
HTTP/1.1 206 OK
Content-Length: 801
Content-Type: application/octet-stream
Content-Location: http://www.onlinedown.net/hj_index.htm
Content-Range: bytes 0-100/2350 //2350:檔案總大小
Last-Modified: Mon, 16 Feb 2009 16:10:12 GMT
Accept-Ranges: bytes
ETag: "d67a4bc5190c91:512"
Server: Microsoft-IIS/6.0
Date: Wed, 18 Feb 2009 07:55:26 GMT
***********************************
注意:如果使用者的請求中含有range ,則伺服器的相應程式碼為206。
206 - Partial Content 客戶傳送了一個帶有Range頭的GET請求,伺服器完成了它(HTTP 1.1新)。
相關文章
- HTTP請求格式和HTTP響應格式HTTP
- 請求和響應
- fiddler修改請求和響應
- JavaScript Fetch API請求和響應JavaScriptAPI
- 【JavaWeb】請求和響應Request&ResponseJavaWeb
- Java教程之SpringMVC的請求和響應JavaSpringMVC
- HTTP 請求與響應HTTP
- Http請求與響應HTTP
- Fiddler如何自動修改請求和響應包
- HTTP的請求與響應HTTP
- Go如何響應http請求?GoHTTP
- Angular 裡 HTTP 請求和響應結構的攔截器(interceptors)在 SAP Spartacus 中的應用AngularHTTP
- 前端快閃四: 攔截axios請求和響應前端iOS
- .net core 雜記:WebAPI的XML請求和響應WebAPIXML
- HTTP請求與響應簡析HTTP
- HTTP請求頭與響應頭HTTP
- Spring boot 與 json_schema ,請求和響應 校驗Spring BootJSON
- Spring Cloud Gateway修改請求和響應body的內容SpringCloudGateway
- Qt - http網路請求與響應QTHTTP
- springboot+aop切點記錄請求和響應資訊Spring Boot
- http請求頭與響應頭的應用HTTP
- 全棧 – 7 爬蟲 Http請求和Chrome全棧爬蟲HTTPChrome
- HTTP請求頭和響應頭詳解HTTP
- 指令碼化HTTP 取得響應 指定請求指令碼HTTP
- Spring MVC能響應HTTP請求的原因?SpringMVCHTTP
- JavaScript 中如何攔截全域性 Fetch API 的請求和響應?JavaScriptAPI
- 學習SpringMVC必知必會(3)~springmvc的請求和響應SpringMVC
- Spring Boot中如何擴充套件XML請求和響應的支援Spring Boot套件XML
- Http請求資料格式HTTP
- Wireshark的HTTP請求包和響應包如何對應HTTP
- HTTP 響應HTTP
- 【HTTP】HTTP請求體中的四種格式HTTP
- HTTP請求方法及響應狀態碼詳解HTTP
- 中止請求和超時 跨域的HTTP請求 認證方式 JSONP跨域HTTPJSON
- 好程式設計師Java學習路線分享SpringMVC之請求和響應程式設計師JavaSpringMVC
- 完整的一次 HTTP 請求響應過程(二)HTTP
- 完整的一次 HTTP 請求響應過程(一)HTTP
- Salesforce Integration 概覽(二) Remote Process Invocation—Request and Reply(遠端程式呼叫--請求和響應)SalesforceREM
- Java語言搭建介面自動化框架學習一(單介面請求和響應)Java框架