python - 如何在 Python 套接字应用程序中接受 GET 请求?

标签 python http sockets webserver

我正在编写一个非常基本的 Web 服务器作为家庭作业,我让它在本地主机端口 14000 上运行。当我浏览到 localhost:14000 时,服务器发回一个带有表单的 HTML 页面(表单的操作是相同的地址 - localhost:14000,不确定这是否正确)。

基本上我希望能够在提交后重新加载页面后从 GET 请求中收集数据 - 我该怎么做?我一般如何访问 GET 中的内容?

注意:我已经尝试过 socket.recv(xxx),如果页面是第一次加载,那将不起作用 - 在这种情况下,我们不会从客户端“接收”任何内容,因此它只会一直旋转。

最佳答案

secret 在于 conn.recv,它将为您提供请求的浏览器/客户端发送的 header 。如果它们看起来像我用 safari 生成的那个,您可以轻松地解析它们(即使没有复杂的正则表达式模式)。

    data = conn.recv(1024)
    #Parse headers
    """
    data will now be something like this:

    GET /?banana=True HTTP/1.1
    Host: localhost:50008
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-us
    Accept-Encoding: gzip, deflate
    Connection: keep-alive

    """
    #A simple parsing of the get data would be:
    GET={i.split("=")[0]:i.split("=")[1] for i in data.split("\n")[0].split(" ")[1][2:].split("&")}

关于python - 如何在 Python 套接字应用程序中接受 GET 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118565/

相关文章:

http - 查询字符串之前的 URL 部分的名称是什么?

javascript - 使用 Node.js 和 Socket.io 定位文件

c - 如何检查远程UDP端口是否打开? C

python - 使用 Python 的 win32com 控制 PowerPoint。如何以编程方式访问 "Save As"选项

python - 用Python NDB有效实现一对多关系

python - (Python) 如果数据类型不是数字,则使变量等于 0

http - 如何在不安装代理的情况下使用 Zabbix 监控主机?

php - 在 linux 中使用 cURL 上传 http 文件(命令行)

c - 在TCP套接字程序中,客户端发送一些数据,但服务器需要多次读取。为什么?

python - 使用 python setup.py 编译和安装 C++ 程序