http請求消息頭主要結構

  • 標準http消息格式

通過Netty服務器輸出接收到的所有http網絡請求信息,得到一個標準的http請求消息頭,通常是如下格式:

GET /netty-4.1.3 HTTP/1.1
host: localhost:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebkit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
Content-Length:0
  • 消息頭主要字段說明

KEY名稱 作用
Accept 請求報頭域用於指定客戶端接受哪些類型的信息。例如 Accept: image/gif,表示希望接受gif圖像格式的資源
Accept-Charset

請求報頭域用於指定客戶端接受的字符集。例如 Accept-Charset: iso8859-1,gb2312, 如果請求消息中沒有設置這個域,

默認任何字符集都是可以接受的

Accept-Encoding

請求報頭域,類似於Accept,但是它用於指定可以接受的內容編碼。例如Accept-Encoding:gzip,deflate,如果請求

消息中沒有設置這個域,則服務器默認客戶端對各種內容編碼都可以接受

Acccept-Language 請求報頭域,類似於Accept,但是它用於指定一種自然語言。例如Accept-Language:zh-cn,

如果請求消息中沒有設置這個域,則服務器默認客戶端對各種語言都可以接受

Authorization

請求報頭域主要用於證明客戶端擁有權限查看某個資源,當瀏覽器訪問某個頁面時,如果收到服務器的相應代碼

爲401(未授權),可以發送一個包含Authorization報頭域的請求,要求服務器對其進行認證

Host 發送請求時,該報頭域是必須的,用於指定被請求資源的Internet地址和端口號,它通常是從http請求的URL中提取出來
User-Agent 請求報頭域允許客戶端將它的操作系統、瀏覽器和其它屬性告訴服務器
Content-Length 請求消息體的長度
Content-Type

表示後面的文檔屬於什麼MIME類型。Servlet默認爲text/plain,但通常需要顯示指定爲text/html。

由於經常要設置Content-Type,因此HttpServletResponse提供了一個專用的方法setContentType

Connection 連接類型。例如Connection:keep-alive

 

Websocket的http請求頭信息結構

Host:localhost:8888
Connection:Upgrade
Pragma:no-cache
Cache-Control:no-cache
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Upgrade:websocket
Origin:http://localhost:63342
Sec-WebSocket-Version:13
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9
Cookie:Idea-f913c00a=e413601c-2507-43f2-ad7b-2a13a1f79f09
x-forwarded-for:192.168.6.12
Sec-WebSocket-Key:YNPUr9CTgbwWtzx4j6woEg==
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
content-length:0

相比標準的http請求,主要區別在於以下幾個key:

  • Connection-->連接類型不是keep-alive,而是upgrade
  • Upgrade-->指定通訊連接爲websocket類型
  • Sec-WebSocket-Version-->指定websocket版本號
  • Sec-WebSocket-Key-->websocket通訊生成的密鑰
  • Sec-WebSocket-Extensions-->websocket通訊的其他擴展信息

有關websocket規範和定義以及介紹可以參考如下鏈接

RFC6455規範 https://tools.ietf.org/html/rfc6455#section-5.5

websocket介紹設計  https://websockets.readthedocs.io/en/stable/design.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章