HTTP 知多少?HTTP報文格式+請求頭+請求類型+請求狀態碼

1. HTTP報文基本格式

HTTP請求報文組成:請求行+請求頭+請求體

  • 請求行:包含用於請求的方法(HEAD/GET/POST),請求 URI 和 HTTP 版本。
  • 請求頭:客戶端的Cookie和User-Agent就放在這裏.
  • 請求體: 比如客戶端POST的數據就放在這裏(對比:GET的數據放在請求行的URL裏).

HTTP響應報文組成:響應行+響應頭+響應體

  • 響應行/狀態行:包含表明響應結果的狀態碼,狀態碼描述和 HTTP 版本。
  • 響應頭: 服務器的Set-Cookie和Server信息就放在這裏.
  • 響應體: 比如服務器返回的HTML和JSON數據就放在這裏

請求頭有哪些內容?

•Accept:瀏覽器可接受的MIME類型
•Accept-Charset: 瀏覽器通過這個頭告訴服務器,它支持哪種字符集
•Accept-Encoding:瀏覽器能夠進行解碼的數據編碼方式,比如gzip
•Accept-Language:瀏覽器所希望的語言種類,當服務器能夠提供一種以上的語言版本時要用到。可以在瀏覽器中進行設置。
•Host:初始URL中的主機和端口
•Referer:包含一個URL,用戶從該URL代表的頁面出發訪問當前請求的頁面
•Content-Type:內容類型
•If-Modified-Since: Wed, 02 Feb 201112:04:56 GMT利用這個頭與服務器的文件進行比對,如果一致,則從緩存中直接讀取文件。
•User-Agent:瀏覽器類型.
•Content-Length:表示請求消息正文的長度
•Connection:表示是否需要持久連接。如果服務器看到這裏的值爲“Keep -Alive”,或者看到請求使用的是HTTP 1.1(HTTP 1.1默認進行持久連接
•Cookie:這是最重要的請求頭信息之一
•Date:Date: Mon, 22 Aug 2011 01:55:39 GMT請求時間GMT

一個完整的HTTP請求如下

GET  /sample.jsp   HTTP/1.1                    //請求行
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)   //請求頭
Accept:image/gif.image/jpeg,*/*      //請求頭:指定客戶端能夠接收的內容格式類型
Accept-Language:zh-cn                   //請求頭:指定客戶端能夠接受的語言類型
Connection:Keep-Alive                    //請求頭:是否開啓持久連接(keepalive)
Host:localhost                                  //請求頭:服務器域名
Accept-Encoding:gzip,deflate          //請求頭:指定客戶端能夠接受的編碼類型
//注意這裏有空的換行

username=jinqiao&password=1234   //請求體

HTTP請求

HTTP響應

2. 請求方式

現在一共8種

HTTP1.0只有三種:Get、Post、Head

  • Get 向特定資源發出請求(請求指定頁面信息,並返回實體主體)
  • Post 向指定資源提交數據進行處理請求(提交表單、上傳文件),又可能導致新的資源的建立或原有資源的修改
  • Head 與服務器索與get請求一致的相應,響應體不會返回,獲取包含在小消息頭中的原信息(與get請求類似,返回的響應中沒有具體內容,用於獲取報頭)

HTTP1.1新增了5種:

  • Put 向指定資源位置上上傳其最新內容(從客戶端向服務器傳送的數據取代指定文檔的內容)
  • Delete 請求服務器刪除request-URL所標示的資源*(請求服務器刪除頁面)
  • Trace 回顯服務器收到的請求,用於測試和診斷
  • opions 返回服務器針對特定資源所支持的HTML請求方法 或web服務器發送*測試服務器功能(允許客戶端查看服務器性能
  • Connect HTTP/1.1協議中能夠將連接改爲管道方式的代理服務器

3. 常見請求狀態碼

2開頭(請求成功)標識成功處理了請求的狀態代碼

  • 200(成功)服務器已經處理了請求。通常,這表示服務器提供了請求的網頁

3開頭(請求被重定向)表示要完成請求,需進一步操作。通常,這些狀態代碼用來重定向

  • 301 Moved Permanently(永久重定向)請求的網頁已永久移動新位置。服務器返回響應(對get或head請求的響應)時,會自動將請求轉動新位置
  • 302 Found(臨時重定向)該狀態碼錶示請求的資源已被分配了新的 URI,希望用戶(本次)能使用新的 URI 訪問。

4開頭(客戶端請求錯誤)請求有語法錯誤或請求無法實現

  • 400 Bad Request 客戶端請求有語法錯誤,不能被服務器所理解
  • 401 Unauthorized 請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用
  • 403 Forbidden 服務器收到請求,但是拒絕提供服務
  • 404 Not Found 請求資源不存在,eg:輸入了錯誤的URL

5開頭(服務器錯誤)這些狀態碼錶示服務器在嘗試處理請求時發生內部錯誤。這些錯誤可能是服務器本身的錯誤,而不是請求出錯

  • ​​​​500 (服務器內部錯誤)服務器遇到錯誤,無法完成請求
  • 501(尚未實施)服務器不具備完成請求的功能。例如,服務器無法識別請求方法時可能會返回此代碼
  • 502(錯誤網關)服務器做爲網關或代理,從上游服務器收到無效響應
  • 503(服務不可用)服務器當前不能處理客戶端的請求(由於超載彙總停機維護),一段時間後可能恢復正常
  • 504(網關超時)服務器做爲網關或代理,但是沒有及時從上游服務器收到請求
  • 505(HTTP版本不受支持)服務器不支持請求中所有的HTTP協議版本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章