author : 丁家文
Http請求與響應格式
Http 請求的格式
Http請求由 請求行,消息報頭,請求正文 三部分組成。
- 請求行:以一個方法符號開頭,後面跟着請求URI和協議的版本,以CRLF作爲結尾
- 條件:請求行以空格分隔。除了作爲結尾的CRLF外,不允許出現單獨的CR或LF字符
- 格式:Method Request-URI HTTP-Version CRLF
- Method:表示請求的方法
- Request-URI:統一資源標識符,標識了要請求的資源
- HTTP-Version:表示請求的HTTP協議版本
- CRLF:表示回車換行
- 請求方法:
- 最常用:GET、POST
- 不常用:HEAD、PUT、DELETE、TRACE、OPTIONS、(TRACE)
- 示例:GET /test.html HTTP/1.1 (CRLF)
- 消息報頭:包含Accept、User-Agent、Host、Accept-Langeuage、connection、Cookie、Referer、Content-Type、Accept-Charset、Accept-Encoding
- 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()方法取得(Get請求的消息體是空的,消息體包含在地址裏)
- Accept-Charset:指出瀏覽器可以接受的字符編碼。英文瀏覽器的默認值是ISO-8859-1
- Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同於文件格式,它是爲了壓縮文件並加速文件傳遞速度。瀏覽器在接收到Web響應之後先解碼,然後再檢查文件格式
- 消息體:請求數據
Http響應的格式
http響應體由三部分組成:狀態行、響應頭、響應正文
-
狀態行:HTTP-Version+Status-Code+Reason-Phrase
- HTTP-Version:Http協議版本
- Status-Code:狀態碼
- 1xx:指示信息–表示請求已接收,繼續處理
- 2xx:成功–表示請求已被成功接收、理解、接受
- 3xx:重定向–要完成請求必須進行更進一步的操作。
- 4xx:客戶端錯誤–請求有語法錯誤或請求無法實現。
- 5xx:服務器端錯誤–服務器未能實現合法的請求。
- Reason-Phrase:狀態代碼的文本描述
- 示例:HTTP-Version+Status-Code+Reason-Phrase
-
響應頭:包含服務器類型,日期,長度,內容類型等
- 示例:
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頁面