Header解析

来源:https://www.cnblogs.com/roostinghawk/archive/2019/05/02/10797040.html
-Advertisement-
Play Games

不管是作為後端還是前端開發人員,對於web請求的過程和參數都是需要瞭解的。 下麵是對一次簡單的http請求的header分析,作為自己的一個總結,也希望對大家有所幫助。 以Chrome為例: 我們對header的參數挨個分析 General Request URL: http://localhost ...


不管是作為後端還是前端開發人員,對於web請求的過程和參數都是需要瞭解的。

下麵是對一次簡單的http請求的header分析,作為自己的一個總結,也希望對大家有所幫助。

以Chrome為例:

 

我們對header的參數挨個分析


 General

  • Request URL: http://localhost:88/  這裡需要瞭解的是URI的結構,URI和URL詳細請參考這裡
    需要註意的地方:錨點(永遠不會發到伺服器端)
    URI和URL的區別:URL是URI最常見的一種形式,URL的協議(http/https/ssh/ftp/wss/mailto)
  • Request Method: GET
    請求方法除了常見的GET,POST,PUT,DELETE,還包括如下:
    HEAD,CONNECT,PATCH,OPTIONS,TRACE

    參考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods

  • Status Code: 200 OK
    狀態碼需要瞭解的大致如下:
    1xx:伺服器收到信息,等待請求者繼續(100:contine,101:協議切換)
    2xx:接受並操作成功(200,201:Created,202:Accepted-可能交給其它進程處理,203 Non-Authoritative Information,204:No Content,
                      205:Reset Content,206:Partial Content)
    3**:重定向(300 Multiple Choice,301 Moved Permanently,302 Found,303 See Other,304 Not Modified,305 Use Proxy,
               306 unused,307 Temporary Redirect,308 Permanent Redirect)
    4xx:客戶端錯誤(400 Bad Request-語義有錯或參數錯誤,401 Unauthorized,402 Payment Required-備用,403 Forbidden-類似許可權禁止,404 Not Found,
                  405 Method Not Allowed,406 Not Acceptable,407 Proxy Authentication Required,408 Request Timeout,409 Conflict,410 Gone,
                  411 Length Required,412 Precondition Failed,413 Payload Too Large,414 URI Too Long,415 Unsupported Media Type,
                  416 Requested Range Not Satisfiable,417 Expectation Failed,418 I'm a teapot-好玩,421 Misdirected Request,
                  422 Unprocessable Entity (WebDAV),423 Locked (WebDAV),424 Failed Dependency (WebDAV),425 Too Early,
                  426 Upgrade Required,428 Precondition Required,429 Too Many Requests,431 Request Header Fields Too Large,
                  451 Unavailable For Legal Reasons)
    5xx:伺服器錯誤(500 Internal Server Error,501 Not Implemented,502 Bad Gateway,503 Service Unavailable,504 Gateway Timeout,
                  505 HTTP Version Not Supported,506 Variant Also Negotiates,507 Insufficient Storage,508 Loop Detected (WebDAV),
                  510 Not Extended,511 Network Authentication Required)

      參考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

  • Remote Address: [::1]:88   請求地址(此處的::1是IPv6本機地址,88為埠號)
  • Referrer Policy: no-referrer-when-downgrade (用於過濾referrer)
    no-referrer
    整個 Referer  首部會被移除。訪問來源信息不隨著請求一起發送。
    no-referrer-when-downgrade (預設值)
    在沒有指定任何策略的情況下用戶代理的預設行為。在同等安全級別的情況下,引用頁面的地址會被髮送(HTTPS->HTTPS),但是在降級的情況下不會被髮送 (HTTPS->HTTP)。
    origin
    在任何情況下,僅發送文件的源作為引用地址。例如  https://example.com/page.html 會將 https://example.com/ 作為引用地址。
    origin-when-cross-origin
    對於同源的請求,會發送完整的URL作為引用地址,但是對於非同源請求僅發送文件的源。
    same-origin
    對於同源的請求會發送引用地址,但是對於非同源請求則不發送引用地址信息。
    strict-origin
    在同等安全級別的情況下,發送文件的源作為引用地址(HTTPS->HTTPS),但是在降級的情況下不會發送 (HTTPS->HTTP)。
    strict-origin-when-cross-origin
    對於同源的請求,會發送完整的URL作為引用地址;在同等安全級別的情況下,發送文件的源作為引用地址(HTTPS->HTTPS);在降級的情況下不發送此首部 (HTTPS->HTTP)。
    unsafe-url
    無論是同源請求還是非同源請求,都發送完整的 URL(移除參數信息之後)作為引用地址。

     


  •  接下來是Response Header

  • Accept-Ranges: bytes (主要用於標示接收文件的大小範圍,比如為了斷點續傳)
    參考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Accept-Ranges
  • Cache-Control: no-cache (註意這個緩存控制是人request和response的
    no-cache:強制確認緩存,也就是說向伺服器確實是否有緩存(使用伺服器端緩存則304)
    no-store:禁止進行緩存
    private:私有(同一用戶)
    public:共有
    max-age:緩存過期機制(秒數)- 如果沒有此參數則會檢查expires屬性,如果expires也沒有,則檢查last modified
    must-revalidate:使用陳舊資源時必須向伺服器驗證(緩存驅逐瞭解下)
    * 關於緩存,非常重要,詳情可參考這裡

     

  • Connection: keep-alive
    close: HTTP1.0預設
    keep-alive: HTTP1.1預設,持久連接  (對於keep-alive的信息,在伺服器設置max和timeout,分別標示最大請求數,超時時間)
    * 所謂長連接是指TCP連接會保持一定時間不關閉

     

  • Content-Length: 147 消息主體大小
  • Content-Type: text/html
    結構:type/subtype;parameter=value,例如:text/plain;charset=UTF-8
    分為兩種:Discrete types和Multipart types
    比較重要的類型如下:
    application/octet-stream:預設二進位文件(未知),一般用作下載文件(和Content-Disposition:attachment一起用)
    text/plain,text/css,text/html,text/javascript
    multipart/form-data
    詳情參考

     

  • Date: Tue, 30 Apr 2019 08:33:21 GMT  (響應時間,也就是報文創建的時間,註意是GMT格林威治時間)
  • ETag: "5cc692d4-93" (資源版本號)
  • Expires: Tue, 30 Apr 2019 08:33:20 GMT (過期時間,同樣是GMT時間)
  • Last-Modified: Mon, 29 Apr 2019 05:59:48 GMT (資源最後更新時間,精確度比ETag低,備用驗證資源是否過期的機制)
  • Server: nginx/1.14.2 (處理請求的軟體及其版本)

 接下來是Request Header

  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    告知伺服器客戶端可以處理的類型
    <MIME_type>/<MIME_subtype> 單一精確的 MIME 類型, 例如text/html.
    <MIME_type>/* 一類 MIME 類型, 但是沒有指明子類。 image/* 可以用來指代 image/png, image/svg, image/gif 以及任何其他的圖片類型。
    */* 任意類型的 MIME 類型
    ;q= (q因數權重)
    值代表優先順序,用相對質量價值表示,又稱作權重。
    對應Response的Content-Type
  • Accept-Encoding: gzip, deflate, br (編碼格式,一般是壓縮類型,對應Response的Content-Encoding。用identity可以禁止壓縮)

  • Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7 
    客戶端可理解的自然語言和優先選擇的區域
    zh-CN是區域,zh是語言,;q是權重
  • Cache-Control: no-cache
    基本和Response中的Cache-Control對應
    如下指定可禁止緩存:
    Cache-Control: no-cache, no-store, must-revalidate
  • Connection: keep-alive
  • Host: localhost:88
  • Pragma: no-cache (為了相容HTTP1.0,等同Cache-Control:no-cache)
  • Upgrade-Insecure-Requests: 1 (表示客戶端優先選擇加密及帶有身份驗證的響應,並且它可以成功處理)
  • User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
    用來讓網路協議的對端來識別發起請求的用戶代理軟體的應用類型、操作系統、軟體開發商以及版本號
    web瀏覽器的格式一般如下:
    Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extensions>
    詳情參考

     


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 自學VS第一天 (目標用vs做個不low的簡歷) 學習視頻 代碼 寫了一天的代碼,自己理解的內容在註釋里 完成效果 VS的漢化 在插件欄找到Chinese (Simplified) Language Pack for Visual Studio Code進行安裝重啟軟體即可 VS我用到的插件 Bra ...
  • Date Math String Object ...
  • onclick單機事件 ondblick雙擊事件 onfocus成為焦點,onblur失去焦點 onchange選中對象的值發生變化 onload頁面裝載 onmousemove滑鼠移動 onmouseeout 出去 onmousewheel滑動滾輪 onkeydown按鍵盤 ...
  • 函數 一、創建函數 1.function 函數名( 形參列表 ){ 函數體 } 2.var 函數名 = function( 形參列表 ) { 函數體 } 3.var 函數名 = new Function("形參1","形參2",...,"形參N","函數體" ) 二、函數的屬性 1.length 形 ...
  • 說起ajax,就不得不說他背後的核心對象XMLHttpRequest,而說到XMLHttpRequest我覺得,從它的readyState狀態說起是最好的切入點。 個人覺得,只要弄清楚了readyState的這幾個狀態,其實ajax的原理也就算弄清楚了。為了更方便您理解,筆者特意畫了一張狀... ...
  • 最短編輯距離 js function levenshteinDistance(a,b){ //生成表 const distanceMatix = Array(a.length + 1).fill(null).map(() = Array(b.length + 1).fill(null)) //第一行 ...
  • 首先要清楚IndexOf的使用方法 indexOf() 方法可返回某個指定的字元串值在字元串中首次出現的位置。 語法 stringObject.indexOf(searchvalue,fromindex) 參數 searchvalue 必需,規定需檢索的字元串值。 fromindex 可選的整數參數 ...
  • 1 2 3 4 5 Title 6 16 17 18 版本號: 19 20 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...