1

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

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

注意:我已经尝试过 socket.recv(xxx),如果页面是第一次加载,这将不起作用——在这种情况下,我们不会从客户端“接收”任何东西,所以它只会继续旋转。

4

1 回答 1

2

秘密在于 conn.recv 它将为您提供请求的浏览器/客户端发送的标头。如果它们看起来像我使用 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("&")}
于 2012-04-12T06:58:58.013 回答