http請求的request和response


一. HTTP請求

HTTP請求是由客戶端發出的消息,用來使服務器執行動作.發出的消息包括起始行,Headers,Body.

起始行

起始行包含三個元素:

  1. HTTP方法
    一個動詞(像GET,PUT或者POST)或者一個名詞(想HEAD或者OPTIONS),用來描述要執行的動作.例如,GET表示要獲取資源,POST表示向服務器推送數據等.
  2. 請求目標
    • 請求目標,通常是一個URL,或者是協議,端口和域名的絕對路徑.
    • 請求的各式會根據不同的HTTP方法而異,可以是:
    • 一個絕對路徑,末尾跟上一個'?'和查詢字符串,這種形式成為原始形式,通常被GET,POST,HEAD和OPTIONS方法所使用.
POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
* 一個完整的URL,被稱為絕對形式,主要在GET連接到代理時使用.
GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
* 由域名和可選端口(以':'為前綴)組成的URL的authority component,稱為authority form,僅在使用CONNECT簡歷HTTP隧道時才使用.
CONNECT developer.mozilla.org:80 HTTP/1.1
* 星號形式(asterisk form),一個簡單的星號("*").配合OPTIONS方法使用,代表整個服務器.
OPTIONS * HTTP/1.1
  1. HTTP版本(HTTP version),定義了剩余報文的結構

Headers

請求的HTTP headers遵循和HTTP header相同的基本結構:不區分大小寫的字符串,緊跟着的冒號(':')和一個結構取決於header的值.整個header(包括值)由一行組成.

  • 請求頭可以分為很多組:
    • General headers:例如Via,適用於整個報文.
    • Request headers:例如User-Agent,Accept-Type等
    • Entity headers:例如Content-Length,適用於請求的body.
      ALT

Body

請求的最后一部分是它的body,不是所有的請求都有一個body,如GET,HEAD,DELETE和OPTIONS等獲取資源的請求,通常不需要body.有些類似於POST請求將數據發送到服務器以更新數據的請求,就會需要body.

  • Body可以分為兩類:
    • Single-resource bodies:由一個單文件組成.該類型body由兩個header定義:Content-Type和Content-Length.
    • Multiple-resource bodyies:由多部分組成,每一部分包含不同的信息位.

二. HTTP響應

狀態行

HTTP響應的起始行被稱作狀態行,包含以下信息:

  1. 協議版本:通常為HTTP/1.1
  2. 狀態碼(status code):表明請求是成功或失敗.常見的成功碼有200,201,300等,失敗碼有400,401,500等.
  3. 狀態文本(status text):一個簡短的,純粹的信息,通過狀態碼的文本描述,幫助人們解讀HTTP消息.
    典型的狀態碼:HTTP/1.1 404 Not Found。

Headers

響應的HTTP headers和其他header相同的結構:不區分大小寫的字符串,緊跟着的冒號(':')和一個結構取決於header類型的值.

  • 響應頭可以分為幾組:
    • General headers:例如Via,適用於整個報文.
    • Request headers:例如Vary和Accept-Ranges,提供其他不符合狀態行的關於服務器的信息.
    • Entity headers:例如Content-Length,適用於請求的body.如果請求中沒有任何的body,則不會發送這類的頭文件
      ALT

Body

響應最后一部分是body,不是所有的響應都有body,具有狀態碼(如201或204)的響應,通常不會有body.

  • Body可分為三類:
    • Single-resource bodies:由已知長度的單個文件組成.該類型body由兩個header定義:Content-Type和Content-Length.
    • Single-resourcebodies:由未知長度的單個文件組成,通過將Transfer-Encoding設置為chunked來使用chunks編碼.
    • Multiple-resource bodies:由多部分body組成,每部分包含不同的信息段.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM