HTTP请求\\响应头语法(HTTP Request\\Response Header Gramma

2019-10-21 04:04发布

在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

澄清将有助于我的代码整洁。

Answer 1:

HTTP报头的名称是不区分大小写 ,每HTTP规范。

RFC 2616 -超文本传输协议- HTTP / 1.1
第4.2节 -邮件标题

HTTP报头字段,其中包括通用头(第4.5节),请求头(第5.3节),响应头(第6.2节),和实体标题(第7.1节)字段,遵循相同的通用格式定义在一节中规定RFC 822的3.1 [9]。 每个报头字段包含一个名称后面跟着冒号(“:”)和字段值。 字段名不区分大小写。 该字段值可以通过LWS的任何量之前,虽然单个SP是优选的。 的报头字段可以多行由每个额外的行前述与至少一个SP或HT延伸过来。 应用程序应该遵循“共同组建”,其中一个是已知的或指示,生成HTTP结构时,由于可能存在一些实现未能接受任何超越了常见的形式。

RFC 7230 -超文本传输协议(HTTP / 1.1):消息句法和路由
第3.2节 -头字段:

每个报头字段包括不区分大小写的字段名 ,后跟一个冒号的(“:”),可选前导空白,字段值,并可选尾随空格。



Answer 2:

HTTP标头名不区分大小写。

它看起来像你使用python。 退房的requests库。 它会让你的生活变得更轻松: http://docs.python-requests.org/en/latest/



Answer 3:

请记住,即使最重要的服务器都会有一致的大小写,任何乔PHP开发人员可以在他们的代码手动设置响应头 - 有没有办法警察什么人使用的资本标准。



文章来源: HTTP Request\\Response Header Grammar