我正在编写一个非常基本的 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/