关于Python中socket的问题

 丁志翔64164 发布于 2022-10-31 12:33

看BaseHTTPServer的源码,发现有:

    self.raw_requestline = self.rfile.readline(65537)

据了解,这个接受的只是http请求头的版本,也就是GET /path HTTP/1.1,最大能接受8KB,也就是65537bit (8 * 1024 * 8), 为了防止数据太大而内存溢出。

而获得整个HTTP请求数据,包括Request Headers和body(post数据)。

    self.request.recv(1024).strip()

结果:

GET / HTTP/1.1
Content-Type: appliction/x-www-form-urlencoded
Content-Length: 33
Host: 127.0.0.1:8888
Connection: close

username=zhg&password=77567wwwwww

这个 self.request 经查询其实就是socket对象的accept方法分配的第一个参数conn

conn, address = socket.accept()
conn.recv(1024)

但是我发现一个问题,BaseHTTPServer的handle方法,调用了本身的handle_one_request和parse_request方法,都只是对请求路径做处理,也就是获得GET /path HTTP/1.1这种。

而我不清楚在什么对象上获取请求体和form数据,可能我没有找到,难道就自己用recv获取?这样会不会有什么不妥。

PS:我想自己封装WSGI Server框架。

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有