【问题标题】:Python proxy - receiving http header from the serverPython 代理 - 从服务器接收 http 标头
【发布时间】:2015-04-17 19:24:44
【问题描述】:

我正在用 Python 构建代理服务器,但我遇到了一个问题。 首先,我将向您展示我的代码的一部分,它显示了从客户端接收数据:如果有来自客户端的数据,它会下载所请求网站的内容(通过使用 urllib 库),然后发送到客户端200 OK 内容长度和内容本身:

        data = currentSocket.recv(4096)
        if data == "":
            open_client_sockets.remove(currentSocket)
            print 'Conn is closed'
        else:

            dataSplit = data.split("\r\n")
            Host = HostFliter(dataSplit)
            print Host, " Host"
            if Host == "":
                break
            contentURL = urllib.urlopen(Host)
            content_to_send = contentURL.read()
            currentSocket.send("HTTP/1.1 200 OK\r\nContent-Length:"+str(len(content_to_send))+"\r\n\r\n"+str(content_to_send))
            contentURL.close()

**变量“Host”包含网站的url。

现在的问题: 我在哪里从服务器获取标头,然后将它们发送到客户端?

**我使用的库:socket、select、urllib。

**这是用于选择库的:

rlist, wlist, xlist = select.select([serverSocket] + open_client_sockets, open_client_sockets, [])

【问题讨论】:

    标签: python http proxy header http-headers


    【解决方案1】:

    HTTP响应语法如下

    HTTP/1.1 200 正常
    内容类型:text/html
    内容长度:38

    <html><body>Hello world!</body></html>

    因此,您需要在\r\n 之前以上述格式发送标头,并以\n 分隔。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 2015-08-09
      • 2010-12-16
      • 2017-05-11
      • 2012-10-20
      • 1970-01-01
      • 2012-11-14
      相关资源
      最近更新 更多