Python HTTP標頭
客戶端和服務器之間的請求和響應涉及消息中的標頭和正文。標頭包含特定于協議的信息,這些信息出現在通過TCP連接發送的原始消息的開頭。消息的正文與標頭使用空白行分隔。
標頭字段
http響應中的標頭可以分為以下類型。以下是標頭的說明和示例。
Cache-ControlCache-Control general-header字段用于指定所有緩存系統必須遵守的指令。語法如下:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Cache-Control : cache-request-directive|cache-response-directive
HTTP客戶端或服務器可以使用“Cache-Control”常規標頭來指定緩存參數或從緩存中請求某些類型的文檔。緩存指令在逗號分隔的列表中指定。例如:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Cache-control: no-cache
Connection連接通用標頭字段允許發送者指定該特定連接所需的選項,并且代理不能通過其他連接傳達這些選項。以下是使用連接頭的簡單語法:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Connection : "Connection"
HTTP/1.1為發送方定義了“off”連接選項,以指示響應完成后將關閉連接。例如:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Connection: close
默認情況下,HTTP 1.1使用持久連接,該連接在事務處理后不會自動關閉。另一方面,HTTP 1.0默認情況下不具有持久連接。如果1.0客戶端希望使用持久連接,則它使用keep-alive參數,如下所示:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Connection: keep-alive
Date所有HTTP日期/時間戳都以格林威治標準時間(GMT)表示。允許HTTP應用程序使用日期/時間戳的以下三種表示形式中的任何一種:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Transfer-Encoding
Transfer-Encoding字段指示已將哪種類型的轉換應用于消息正文,以便在發送者和接收者之間安全地進行轉換。這與內容編碼不同,因為傳輸編碼是消息的屬性,而不是實體主體的屬性。Transfer-Encoding標頭字段的語法如下:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Transfer-Encoding: chunked
所有傳輸編碼值都不區分大小寫。
UpgradeUpgrade通用標頭允許客戶端指定其支持的其他通信協議,并在服務器認為適合切換協議時使用。例如:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Upgrade標頭字段旨在提供一種從HTTP/1.1過渡到其他不兼容協議的簡單機制。
Via
網關和代理必須使用Via通用標題來指示中間協議和接收者。例如,可以將請求消息從HTTP/1.0用戶代理發送到名為“fred”的內部代理,該代理使用HTTP/1.1將請求轉發到位于nowhere.com的公共代理,代理通過以下方式完成請求:將其轉發到位于 www.ics.uci.edu 的原始服務器。www.ics.uci.edu 接收到的請求將具有以下Via標頭字段:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning
Warning通用標頭用于攜帶有關消息狀態或轉換的其他信息,這些信息可能未反映在消息中。一個響應可能包含多個警告標頭。
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Warning : warn-code SP warn-agent SP warn-text SP warn-date
標頭示例
在下面的示例中,使用urllib2模塊使用urlopen獲得響應。接下來應用info()方法來獲取該響應的標頭信息。
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 import urllib2 response = urllib2.urlopen('http://www.090948.com/python/python-index.html') html = response.info() print html
當我們運行上面的程序時,得到以下輸出:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 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 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cache-Control: max-age=0 Connection: keep-alive Cookie: OUTFOX_SEARCH_USER_ID_NCOO=1091135338.9776888; JSESSIONID=E15B8EC70E5BBF1AEDF4B4EAA2CDB5E8; Hm_lvt_b7b3187b2696243340bf6da4428bc560=1598152290,1598152290,1598152812,1598274529; Hm_lpvt_b7b3187b2696243340bf6da4428bc560=1598326307 Host: www.090948.com If-Modified-Since: Mon, 24 Aug 2020 12:50:33 GMT If-None-Match: W/"5f43b799-b8ee" Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: none Sec-Fetch-User: ?1 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36
- Python讀寫csv文件的操作方法
- Python的gtts庫將文字轉為音頻應該如何操作
- Python異步之怎么保護任務免于取消
- Python異步之上下文管理器怎么使用
- Python中Matplotlib圖像如何添加標簽
- Python如何利用手勢識別實現貪吃蛇游戲
- 如何封裝Python時間處理庫創建自己的TimeUtil類
- Python IP地址
- Python DNS查找
- Python HTTP請求
- Python HTTP響應
- Python HTTP標頭
- Python 自定義HTTP請求
- Python HTTP驗證
- Python SMTP
- Python 并發與并行
- Python 同步線程
- Python 測試線程應用程序
- Python 進程池
- Python 事件驅動編程