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