http請求報包含三個部分:
請求行 + 請求頭 + 數據體
請求行包含三個內容 method + request-URI + http-version 如 GET /icwork/? Search = product HTTP/1.1
method 包含有 post , get, head,delete, put, connect, options, patch, propfind, propatch, mkcol, copy, move, lock, unlock, trace, head
方法:
get |
通過請求URI獲得資源 |
post | 用於添加新的資源,用於表單提交 |
put |
用於修改某個內容 |
delete | 刪除某個內容 |
connect | 用於代理進行傳輸例如SSL |
options | 詢問可以執行那些方法 |
patch | 部分文檔更該 |
propfind | 查看屬性 |
proppatch | 設置屬性 |
mkcol | 創建集合 |
copy | 拷貝 |
move | 移動 |
lock | 加鎖 |
unlock | 解鎖 |
trace | 用於遠程診斷服務器 |
head | 類似於get,用於檢查對象是否存在用於得到元數據 |
請求頭
請求頭包含:
Accept:指瀏覽器或其他客戶可以接愛的MIME文件格式。Servlet可以根據它判斷並返回適當的文件格式。
User-Agent:是客戶瀏覽器名稱
Host:對應網址URL中的Web名稱和端口號。
Accept-Langeuage:指出瀏覽器可以接受的語言種類,如en或en-us,指英語。
connection:用來告訴服務器是否可以維持固定的HTTP連接。http是無連接的,HTTP/1.1使用Keep-Alive為默認值,這樣,當瀏覽器需要多個文件時(比如一個HTML文件和相關的圖形文件),不需要每次都建立連接
Cookie:瀏覽器用這個屬性向服務器發送Cookie。Cookie是在瀏覽器中寄存的小型數據體,它可以記載和服務器相關的用戶信息,也可以用來實現會話功能。
Referer:表明產生請求的網頁URL。如比從網頁/icconcept/index.jsp中點擊一個鏈接到網頁/icwork/search,在向服務器發送的GET/icwork/search中的請求中,Referer是http://hostname:8080/icconcept/index.jsp。這個屬性可以用來跟蹤Web請求是從什么網站來的。
User-Agent:是客戶瀏覽器名稱。
Content-Type:用來表名request的內容類型。可以用HttpServletRequest的getContentType()方法取得。
Accept-Charset:指出瀏覽器可以接受的字符編碼。英文瀏覽器的默認值是ISO-8859-1.
Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同於文件格式,它是為了壓縮文件並加速文件傳遞速度。瀏覽器在接收到Web響應之后先解碼,然后再檢查文件格式。
getf方法請求頭例如:
Accept:image/webp,image/*,*/*;q=0.8
指瀏覽器或其他客戶可以接愛的MIME文件格式。Servlet可以根據它判斷並返回適當的文件格式。 Accept-Encoding:gzip, deflate, sdch, br
指出瀏覽器可以接受的編碼方式。編碼方式不同於文件格式,它是為了壓縮文件並加速文件傳遞速度。瀏覽器在接收到Web響應之后先解碼,然后再檢查文件格式。 Accept-Language:en-US,en;q=0.8
指出瀏覽器可以接受的語言種類,如en或en-us,指英語。 Connection:keep-alive
用來告訴服務器是否可以維持固定的HTTP連接。http是無連接的,HTTP/1.1使用Keep-Alive為默認值,
這樣,當瀏覽器需要多個文件時(比如一個HTML文件和相關的圖形文件),不需要每次都建立連接 Cookie:PSTM=1466499789; BAIDUID=D3A617EE01FFA9DB9B7E3E5F0D3A01EE:FG=1; BIDUPSID=4AA34EC11075CB66B8BC9792DD422B6F; BDUSS=VCc1M0cVQtYnFGfmxTUW5kVTUydnBZUmhiWFRXbnRlMnpIdWV2ODVxNHZ1WkZYQVFBQUFBJCQAAAAAAAAAAAEAAADkEA1ZtPO3rMfRt6zH0cfRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8salcvLGpXdz; BD_HOME=1; BD_UPN=123353; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; BD_CK_SAM=1; H_PS_PSSID=19292_18286_1458_20318_18241_20369_17942_20388_19690_20417_18560_17001_15560_12277_20253; BDSVRTM=0 Host:www.baidu.com Referer:https://www.baidu.com/s?wd=http%20%E8%AF%B7%E6%B1%82%E6%95%B0%E6%8D%AE%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85%E6%A0%BC%E5%BC%8F&rsv_spt=1&rsv_iqid=0x9b746a8000022af9&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&oq=http%20%E8%AF%B7%E6%B1%82%E6%96%B9%E5%BC%8Fpost%20url%E6%A0%BC%E5%BC%8F&rsv_t=59fb7cEn5xgK8JFpqQ7F7coy6k6dn5sGpEMj1cDM4oMoy0TGArJ2l3fxOqy6F9lXoqoi&inputT=7936&rsv_pq=ca5859d100027005&rsv_sug3=73&rsv_sug1=12&rsv_sug7=100&rsv_sug2=0&rsv_sug4=32020 User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36
post方法的請求頭
Accept:*/* Accept-Encoding:gzip, deflate, br Accept-Language:en-US,en;q=0.8 Authorization:Basic WkEtMTE0MjcyNjAyMDY= Connection:keep-alive Content-Length:666 Content-Type:application/json Host:zhihu-web-analytics.zhihu.com Origin:http://www.zhihu.com Referer:http://www.zhihu.com/question/41690822 User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Request Payload view source
相比之下多了content-Type 和 Content-Length
Content-Type:表示的是請求報文體的 MIME 類型 ,注:GET的請求消息體是空的 所以不需要指定消息體的MIME類型
Content-Length:表示的是 post的數據的長度
例如請求數據:
1 GET/sample.jspHTTP/1.1 2 Accept:image/gif.image/jpeg,*/* 3 Accept-Language:zh-cn 4 Connection:Keep-Alive 5 Host:localhost 6 User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0) 7 Accept-Encoding:gzip,deflate 8 9 username=jinqiao&password=1234
第一行為http請求行,包含方法,URI 和http版本
1-7為請求頭,包含瀏覽器,主機,接受的編碼方式和壓縮方式
第8行表示一個空行 表示請求頭結束 這個空行是必須的
第9行是數據體,比如是需要查詢的信息。
http響應體由三部分組成:
http響應由三個部分組成分別是狀態行,響應頭,響應正文。
1xx | 指示信息–表示請求已接收,繼續處理 |
2xx | 成功–表示請求已被成功接收、理解、接受 |
3xx | 重定向–要完成請求必須進行更進一步的操作。 |
4xx | 客戶端錯誤–請求有語法錯誤或請求無法實現。 |
5xx | 服務器端錯誤–服務器未能實現合法的請求。 |
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
響應正文響應正文就是服務器返回的HTML頁面