Http協議對瀏覽器發出的Request格式以及對Web服務器發出的Response格式有具體的規定。
請求部分由三部分組成:
- Requset line:請求行,位于第一行
- Request headers:請求消息頭,從第二行開始至第一個空行結束
- Request body:請求正文,從第一個空行之后的都是正文
響應部分也由三部分組成:
- Response line:響應行,位于第一行
- Response headers:響應消息頭,從第二行開始至第一個空行結束
- Response body:響應正文,從第一個空行之后的都是正文
一、Http請求
Http請求具體格式如下:
Method Path-to-resource Http/Version-number |
User-agent 瀏覽器的類型 Accept 瀏覽器接受的MIME類型 Accept language 用戶選擇的接受語言 Accept-charset 用戶首選的編碼字符集 …… |
空行 |
Option Request Body |
①請求行:
1.Method為請求方式,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE,常用的是GET和POST
GET的特點:默認的請求方式。
當請求的資源路徑為/SdustExam/Login.jsp?username=admin&passWord=123456時,GET方式會把表單的請求的數據放在請求的URI的后面,?username=admin&password=123456,這樣會暴露數據,而且請求行長度有限。
POST的特點(經常使用的):借助HTML中的form表單。<form action="Login.jsp" method="post">請求參數出現在正文部分,長度木有限制,相對安全。
2.Path-to-resource :請求的資源的URI。例如/SdustExam/Login.jsp
3.Http/Version-number:客戶端使用的協議的版本,有HTTP/1.0和HTTP/1.1。
HTTP/1.0:特點:每次請求服務器上的資源都要建立新的連接,響應完畢后都會關閉連接。是無狀態的協議。
HTTP/1.1:特點:在一次TCP/IP連接的基礎上可以發出多次請求和得到多次的響應。比1.0多了一些請求和響應頭。
②請求消息頭
向服務器傳遞附加信息
Accept:通知服務器,瀏覽器可以接受的MIME類型。(文件系統中用文件擴展名區分數據的類型。網絡上用MIME類型來區分數據類型。Tomcat/conf/web.xml)
MIME類型名稱:大類型/小類型 如text/html、text/CSS等等
Accept-Charset:通知服務器,瀏覽器支持的字符集,如gbk,utf-8
Accept-Encoding:通知服務器,瀏覽器能夠解碼的數據壓縮方式。比如:gzip
Accept-language:通知服務器,所希望的語言
Host:請求的主機和端口
Referer:是一個URL地址。取值是當前頁面之前的那個頁面地址的。防盜鏈用
Content-Type:通知服務器,請求正文的MIME類型。取值:application/x-www-form-urlencoded默認值,對應的是form表單的enctype屬性
If-Modified-Since:通知服務器,緩存的文件的最后修改時間。
User-Agent:通知服務器,瀏覽器類型.
Content-Length:表示請求消息正文的長度
Connection:表示是否需要持久連接。如果服務器看到這里的值為“Keep -Alive”,或者看到請求使用的是HTTP 1.1(HTTP 1.1默認進行持久連接 )
Cookie:這是最重要的請求頭信息之一(會話有關)
二、http響應
http響應具體格式如下:
Http/Version-number Statuscode message |
Server 服務器的類型信息 Content-type 響應的MIME類型信息 Content-length 被包含在相應類型中的字符數量 …… |
空行 |
Option Response Body |
①響應行:
Http/Version-number:服務器用的協議版本
Statuscode:響應碼。代表服務器處理的結果的一種表示,常用的響應碼有:
200:正常
302/307:重定向
304:服務器的資源沒有被修改
404:請求的資源不存在
500:服務器報錯了
message:響應碼描述。例如200的描述為OK
②響應消息頭:
Location:通知客戶端,指示新的資源的位置(結合302/307來用。請求重定向)
Server:通知客戶端,服務器的類型
Content-Encoding:通知客戶端,響應正文的壓縮編碼方式。常用的是gzip。
Content-Length:通知客戶端響應正文的數據大小
Content-Type:通知客戶端響應正文的MIME類型
Refresh:讓瀏覽器自動刷新。取值為整數(刷新的時間間隔,單位是秒)
Refresh:3
Refresh:3;URL=其他資源的URI
Content-Disposition:通知客戶端,以下載的方式打開資源。
Content-Disposition:attachment;filename=1.jpg
Set-Cookie:SS=Q0=5Lb_nQ; path=/search服務器端發送的Cookie(會話有關)
Expires: -1 網頁的有效時間。單位是毫秒,-1為通知客戶端不要緩存
Cache-Control: no-cache (1.1) 通知客戶端不要緩存
PRagma: no-cache (1.0) 通知客戶端不要緩存