HTTP協(xié)議是什么由w3c制定的一種網(wǎng)絡(luò)應(yīng)用層協(xié)議,定義了瀏覽器與web服務(wù)器之間通信時所使用的數(shù)據(jù)格式。通信過程1.瀏覽器建立與web服務(wù)器之間的連接 2.瀏覽器將請求數(shù)據(jù)打包(生成請求數(shù)據(jù)包)并發(fā)送到web服務(wù)器 3.web服務(wù)器將處理結(jié)果打包(生成響應(yīng)數(shù)據(jù)包)并發(fā)送給瀏覽器 4.web服務(wù)器關(guān)閉連接 總結(jié): 建立連接——>發(fā)送請求數(shù)據(jù)包——>返回響應(yīng)數(shù)據(jù)包——>關(guān)閉連接 數(shù)據(jù)格式請求數(shù)據(jù)包包含什么1.請求行:請求類型/請求資源路徑、協(xié)議的版本和類型 2.請求頭:一些鍵值對,一般由w3c定義,瀏覽器與web服務(wù)器之間都可以發(fā)送,表示特定的某種含義 3.【空行】請求頭與請求體之間用一個空行隔開; 4.請求體:要發(fā)送的數(shù)據(jù)(一般post方式會使用);例:userName=123&password=123&returnUrl=/ 如: # Request Headers
POST /adduser HTTP/1.1
Host: localhost:8030
Connection: keep-alive
Content-Length: 16
Pragma: no-cache
Cache-Control: no-cache
Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
# Form Data
name=name&age=11
請求頭含義:Accept:指瀏覽器或其他客戶可以接愛的MIME文件格式。Servlet可以根據(jù)它判斷并返回適當(dāng)?shù)奈募袷健?
User-Agent:是客戶瀏覽器名稱
Host:對應(yīng)網(wǎng)址URL中的Web名稱和端口號。
Accept-Langeuage:指出瀏覽器可以接受的語言種類,如en或en-us,指英語。
connection:用來告訴服務(wù)器是否可以維持固定的HTTP連接。http是無連接的,HTTP/1.1使用Keep-Alive為默認(rèn)值,這樣,當(dāng)瀏覽器需要多個文件時(比如一個HTML文件和相關(guān)的圖形文件),不需要每次都建立連接
Cookie:瀏覽器用這個屬性向服務(wù)器發(fā)送Cookie。Cookie是在瀏覽器中寄存的小型數(shù)據(jù)體,它可以記載和服務(wù)器相關(guān)的用戶信息,也可以用來實現(xiàn)會話功能。
Referer:表明產(chǎn)生請求的網(wǎng)頁URL。如比從網(wǎng)頁/icconcept/index.jsp中點擊一個鏈接到網(wǎng)頁/icwork/search,在向服務(wù)器發(fā)送的GET/icwork/search中的請求中,Referer是http://hostname:8080/icconcept/index.jsp。這個屬性可以用來跟蹤Web請求是從什么網(wǎng)站來的。
Content-Type:用來表名request的內(nèi)容類型??梢杂肏ttpServletRequest的getContentType()方法取得。
Accept-Charset:指出瀏覽器可以接受的字符編碼。英文瀏覽器的默認(rèn)值是ISO-8859-1.
Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同于文件格式,它是為了壓縮文件并加速文件傳遞速度。瀏覽器在接收到Web響應(yīng)之后先解碼,然后再檢查文件格式。
get和post的區(qū)別1.get直接在瀏覽器輸入,post需要工具發(fā)送請求 2.get用url或者cookie傳參,post將數(shù)據(jù)放在body中 3.get的URL有長度限制,post數(shù)據(jù)可以非常大 4.post比get安全,因為URL看不到數(shù)據(jù) 5.get用來獲取數(shù)據(jù),post用來發(fā)送數(shù)據(jù) 響應(yīng)數(shù)據(jù)包包含什么1.狀態(tài)行:協(xié)議版本、數(shù)字形式的狀態(tài)代碼和狀態(tài)描述,個元素之間以空格分隔 2.響應(yīng)頭:包含服務(wù)器類型、日期、長度、內(nèi)容類型等 3.【空行】響應(yīng)頭與響應(yīng)體之間用空行隔開 4.響應(yīng)正文:程序處理后果,瀏覽器會將實體內(nèi)容中的數(shù)據(jù)取出來,生成相應(yīng)的頁面 如: Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112
常見狀態(tài)碼1**:提示信息-表示請求已收到,繼續(xù)處理 2**:發(fā)送成功(200) 3**:重定向(302) 4**:客戶端錯誤 400.發(fā)送請求有語法錯誤 401.訪問頁面沒有授權(quán) 403.沒有權(quán)限訪問該頁面 404.沒有該頁面 5**:服務(wù)端錯誤 500.服務(wù)器內(nèi)部異常 504.服務(wù)器請求超時,沒有返回結(jié)果 |
|