HTTP協定
HTTP (Hypertext Transport Protocol)
- 超文本傳輸協定,用來傳輸超媒體文件(ex.html)
- Stateless
- 定義了client 與 Server溝通的規則
HTTP Request
Request格式
請求首行 (Request Line)
請求頭訊息(Request Header)
空行(CR+LF)
請求體 (Request Body)
GET
沒有請求空行與請求體
- 請求首行:GET /Hello/index.jsp HTTP/1.1:GET請求,請求服務器路徑為Hello/index.jsp,協議為1.1;沒有請求體,所以請求信息會放在url上,即第一行上
- Host:localhost:請求的主機名為localhost;
- User-Agent : Mozilla/4.0 (compatible; MSIE 8.0…:與瀏覽器和OS相關的信息。有些網站會顯示用戶的系統版本和瀏覽器版本信息,這都是通過獲取User-Agent頭信息而來的;
- Accept : /:告訴服務器,當前客戶端可以接收的文檔類型,/,就表示什麼都可以接收;
- Accept-Language : zh-CN:當前客戶端支持的語言,可以在瀏覽器的工具選項中找到語言相關信息;
- Accept-Encoding : gzip, deflate:支持的壓縮格式。數據在網絡上傳遞時,可能服務器會把數據壓縮後再發送;
- Connection : keep-alive:客戶端支持的鏈接方式,保持一段時間鏈接,默認為3000ms;
- Cookie :JSESSIONID=XXXXX:因為不是第一次訪問這個地址,所以會在請求中把上一次服務器響應中發送過來的Cookie在請求中一併發送過去。
POST
请求有请求体,而GET请求没有请求体。所以POST可以提交大量数据,GET不能提交大量数据
- POST /regist HTTP/1.1
- Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, /
- Referer: http://localhost:8080/FirsWeb/ :請求來自哪個頁面
- Accept-Language: zh-Hant-TW,zh-Hant;q=0.8,en-US;q=0.5,en;q=0.2
- Content-Type: application/x-www-form-urlencoded : 表單的數據類型
- UA-CPU: AMD64
- Accept-Encoding: gzip, deflate
- User-Agent: Mozilla/5.0 (Windows NT 6.2; Win64; x64; Trident/7.0; rv:11.0) like Gecko
- Host: localhost:8080
- Content-Length: 13
- Connection: Keep-Alive
- Cache-Control: no-cache
- 空行
- username=test : 請求體
HTTP Response
Response
响應首行 (Response Line)
响應頭訊息(Response Header)
空行(CR+LF)
响應體(Response Body) : 服務器傳遞給客戶端要使用的html頁面等數據
- HTTP/1.1 200 OK: 協議版本 响應狀態碼 响應提示訊息
- Server: Apache-Coyote/1.1
- Content-Type: text/html;charset=UTF-8: 內容類型表示服務器回傳的數據內容類型
- Content-Length: 274:响應內容長度;
- Date: Tue, 07 Apr 2015 10:08:26 GMT
响應碼
-
200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中;
-
404:請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源;
-
500:請求資源找到了,但服務器內部出現了錯誤;
-
302:重定向,當響應碼為302時,表示服務器要求瀏覽器重新再發一個請求,服務器會發送一個響應頭Location,它指定了新請求的URL地址;
-
以2xx的响应码:都表示成功
-
以3xx的响应码:都表示需要重新请求另一个资源
-
以4xx的响应码:都表示资源未找到(请求地址错误),服务器启动失败
-
以5xx的响应码:都表示服务器内部出错,(即代码错误)
MIME TYPE
- .html text/html
- .txt text/plain
- .jpeg,.jpg image/jpeg
reference
- Java Web - 雷豐陽 P74 - P77
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment