HTTP協議是什么
由w3c制定的一種網絡應用層協議,定義了瀏覽器與web服務器之間通信時所使用的數據格式。
通信過程
1.瀏覽器建立與web服務器之間的連接
2.瀏覽器將請求數據打包(生成請求數據包)並發送到web服務器
3.web服務器將處理結果打包(生成響應數據包)並發送給瀏覽器
4.web服務器關閉連接
總結:
建立連接——>發送請求數據包——>返回響應數據包——>關閉連接
數據格式
請求數據包包含什么
1.請求行:請求類型/請求資源路徑、協議的版本和類型
2.請求頭:一些鍵值對,一般由w3c定義,瀏覽器與web服務器之間都可以發送,表示特定的某種含義
3.【空行】請求頭與請求體之間用一個空行隔開;
4.請求體:要發送的數據(一般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可以根據它判斷並返回適當的文件格式。 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請求是從什么網站來的。
Content-Type:用來表名request的內容類型。可以用HttpServletRequest的getContentType()方法取得。 Accept-Charset:指出瀏覽器可以接受的字符編碼。英文瀏覽器的默認值是ISO-8859-1. Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同於文件格式,它是為了壓縮文件並加速文件傳遞速度。瀏覽器在接收到Web響應之后先解碼,然后再檢查文件格式。
get和post的區別
1.get直接在瀏覽器輸入,post需要工具發送請求
2.get用url或者cookie傳參,post將數據放在body中
3.get的URL有長度限制,post數據可以非常大
4.post比get安全,因為URL看不到數據
5.get用來獲取數據,post用來發送數據
響應數據包包含什么
1.狀態行:協議版本、數字形式的狀態代碼和狀態描述,個元素之間以空格分隔
2.響應頭:包含服務器類型、日期、長度、內容類型等
3.【空行】響應頭與響應體之間用空行隔開
4.響應正文:程序處理后果,瀏覽器會將實體內容中的數據取出來,生成相應的頁面
如:
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
常見狀態碼
1**:提示信息-表示請求已收到,繼續處理
2**:發送成功(200)
3**:重定向(302)
4**:客戶端錯誤
400.發送請求有語法錯誤
401.訪問頁面沒有授權
403.沒有權限訪問該頁面
404.沒有該頁面
5**:服務端錯誤
500.服務器內部異常
504.服務器請求超時,沒有返回結果
