python socket编程:解析http请求头

在上一篇文章中我们知道,socket.accept()接受的数据是请求头,请求头格式是这样的:

POST /login HTTP/1.1

Host: 127.0.0.1:1207

User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Referer: http://127.0.0.1:1207/login

Content-Type: application/x-www-form-urlencoded

Content-Length: 27

Cookie: D9zb2HfPUf8RI7AOwsUZpiBq

Connection: keep-alive

Upgrade-Insecure-Requests: 1

username=Harp&password=1234

这是一个POST请求,请求头第一行是POST /login HTTP/1.1,以空格划分,分别是请求方法、路径和协议,之后则是key: value形式的各种数据组成的header,我们暂且不管每一行分别是什么意思,然后是空行,结尾的username=Harp&password=1234是body部分,表单通过POST方法提交的数据(如账号密码)就在这里,GET请求则没有body部分。请求头的换行使用的是'/r/n'。

编写一个Request类,来解析请求的方法、路径、header和body,如下:

猜你喜欢

转载自blog.csdn.net/qq_40925239/article/details/89516389