django http 收发_Django接收自定义http header过程详解

add by zhj: Django将所有http header(包括你自定义的http header)都放在了HttpRequest.META这个Python标准字典中,当然HttpRequest.META

中还包含其它一些键值对,这些键值对是Django加进去的,如SERVER_PORT等。对于http header,Django进行了重命名,规则如下

(1) 所有header名大写,将连接符“-”改为下划线“_”

(2) 除CONTENT_TYPE和CONTENT_LENGTH,其它的header名称前加“HTTP_”前缀

我个人比较喜欢跟踪源代码来查看,源代码如下,

class WSGIRequestHandler(BaseHTTPRequestHandler):

server_version = "WSGIServer/" + __version__

def get_environ(self):

env = self.server.base_environ.copy()

env['SERVER_PROTOCOL'] = self.request_version

env['REQUEST_METHOD'] = self.command

if '?' in self.path:

path,query = self.path.split('?',1)

else:

path,query = self.path,''

env['PATH_INFO'] = urllib.unquote(path)

env['QUERY_STRING'] = query

host = self.address_string()

if host != self.client_address[0]:

env['REMOTE_HOST'] = host

env['REMOTE_ADDR'] = self.client_address[0]

if self.headers.typeheader is None:

env['CONTENT_TYPE'] = self.headers.type

else:

env['CONTENT_TYPE'] = self.headers.typeheader

length = self.headers.getheader('content-length')

if length:

env['CONTENT_LENGTH'] = length

for h in self.headers.headers:

k,v = h.split(':',1)

k=k.rep

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值