簡體   English   中英

HTTP請求\\響應頭語法

[英]HTTP Request\Response Header Grammar

在HTTP請求或響應的標頭中,標頭鍵在服務器之間在大小寫方面是恆定的。

我問,所以我可以在我的代碼中期望:(使用偽函數名稱)

安全精確的Python代碼

for hdr in header.keys():
    if 'content-length' == hdr.lower():
        recv_more_data( header[hdr] )    # header[hdr] == Content-Length (5388) bytes
        break    # Exit for loop when if statement is met.

我要使用的代碼

 recv_more_data (header['Content-Length'])    
 # I know to expect 'Content-Length' not 'content-Length' or some other variation

這意味着服務器將像這樣返回帶有密鑰的標頭。

標准要求

GET / HTTP/1.1
Host: www.example-host.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0
Accept: */*
Accept-Language: en-US
Accept-Encoding: gzip
Connection: closed
Content-Length: 0

不好但可能的回應?

HTTP/1.1 200 OK
Server: nginx/1.0.15
date: Thu, 23 Oct 2014 00:25:37 GMT
content-Type: text/html; charset=iso-8859-1
transfer-encoding: chunked
Connection: close
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip

澄清將有助於我的代碼整潔。

根據HTTP規范,HTTP標頭名稱不區分大小寫

RFC 2616-超文本傳輸​​協議-HTTP / 1.1
第4.2節 -郵件標題

HTTP標頭字段包括通用標頭(第4.5節),請求標頭(第5.3節),響應標頭(第6.2節)和實體標頭(第7.1節)字段,它們遵循與本節相同的通用格式RFC 822 [3.1]中的3.1。 每個標題字段均由名稱,后跟冒號(“:”)和字段值組成。 字段名稱不區分大小寫。 字段值可以在任何數量的LWS之前,盡管首選單個SP。 通過在每條額外的行之前添加至少一個SP或HT,可以將標題字段擴展到多行。 在生成HTTP構造時,應用程序應遵循“通用形式”,即已知形式或表示形式,因為某些實現可能無法接受通用形式以外的任何形式。

RFC 7230-超文本傳輸​​協議(HTTP / 1.1):消息語法和路由
第3.2節 -標頭字段:

每個標題字段均由不區分大小寫的字段名,后跟冒號(“:”),可選的前導空格,字段值和可選的尾隨空格組成。

請記住,即使大多數主要服務器都具有一致的大寫字母,任何Joe PHP Developer都可以在其代碼中手動設置響應頭-並且沒有辦法監管該人用作大寫字母的標准。

HTTP標頭名稱不區分大小寫。

看來您使用的是python。 簽出requests庫。 它將使您的生活更加輕松: http : //docs.python-requests.org/en/latest/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM