1. 程式人生 > 實用技巧 >HTTP報文

HTTP報文

HTTP報文

目錄

可以參考相關連結

https://blog.csdn.net/lyn_00/article/details/84953763

https://www.cnblogs.com/kikochz/p/12751405.html

https://www.cnblogs.com/ldq2016/p/9055933.html

報文 = 報文行 + 報文頭 + 報文體

請求報文

請求行
<im

  • 請求方式

    GET:沒有請求體,引數通過鍵值對傳遞,形如

    www.baidu.com/query?user=username&pass=password

    如果資料是英文字母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用BASE64加密

    OPTIONS:預檢請求,不會攜帶Cookie和引數

    參考連結: https://www.jianshu.com/p/5cf82f092201?tdsourcetag=s_pctim_aiomsg

    HEAD:與GET類似,但是返回的響應中沒有響應體,一般用於判斷某個資源是否存在

        @ResponseBody
        @RequestMapping(value = "/test", method = RequestMethod.HEAD)
        public String test() {
            return "hello world";
        }
    

POST: 一般請求行種沒有引數,有請求體,具體資料存在請求體中,注意這裡用POSTMAN或是fiddler模擬的請求不能模擬出瀏覽器的效果

  • PUT:更新請求
  • DELETE:刪除請求

請求頭

  • User-Agent:表示首部包含了一個特徵字串,用來讓網路協議的對端來識別發起請求的使用者代理軟體的應用型別、作業系統、軟體開發商以及版本號

  • Connection:keep-alive , 開啟HTTP持久連線,預設值

  • Accept:表示請求接受響應報文必須是該MIME型別的

    accept: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    

    這裡的 */* 表示接收所有MIME 型別 , 所以前面表示接收的順序
    application/json 也是MIME型別

  • Accept-Charset:告訴伺服器能傳送哪些字符集

  • Accept-Encoding:告訴伺服器能傳送哪些編碼方式

  • Authorization:授權資訊

  • Referer:請求來自哪裡,以URL的方式顯示

  • Host:接受請求的主機名和埠,80埠不用顯示

  • Cookie:客戶端用它像伺服器傳送資料

  • Content-Type:請求體內容的型別,get沒有請求體所以沒有該屬性

    具體參考:https://www.cnblogs.com/kikochz/p/13546104.html

  • Content-Length:請求體的長度

  • DNT(do not track):表明使用者對於網站的追蹤偏好

    0代表願意被追蹤

    1代表不願意被追蹤

空行

告訴服務端請求頭部到此為止

請求體

  • GET沒有請求體

  • POST有請求體

應答報文

響應行

常見狀態碼參考:https://www.cnblogs.com/kikochz/p/12840652.html

  • 狀態碼

響應頭

參考:https://www.cnblogs.com/ldq2016/p/9055933.html

  • Content-Length:響應體的長度

  • Content-Type:響應體內容的型別

  • Content-Disposition:告訴瀏覽器以下載方式開啟資料

  • Expires:

  • Cache-Control:告訴瀏覽器如何控制響應內容的快取

    具體參考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Cache-Control

    • private:內容只快取到私有快取中(僅客戶端可以快取,代理伺服器不可快取)
    • public:所有內容都將被快取(客戶端和代理伺服器都可快取)
    • max-age= xxx :設定快取儲存的最大週期,超過這個時間快取被認為過期(單位秒)。與Expires相反,時間是相對於請求的時間。
    • no-cache: 在釋出快取副本之前,強制要求快取把請求提交給原始伺服器進行驗證(協商快取驗證)。
    • no-store:所有內容都不會被快取到快取或 Internet 臨時檔案中

響應體