我正在使用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”包含网站的网址。
现在提出问题: 我从哪里获取服务器的标头,然后将它们发送到客户端?
**我使用的库:socket,select,urllib。
**这是针对选择库的:
rlist, wlist, xlist = select.select([serverSocket] + open_client_sockets, open_client_sockets, [])
答案 0 :(得分:0)
HTTP响应语法如下
HTTP / 1.1 200 OK
内容类型:text / html
内容长度:38
<html><body>Hello world!</body></html>
因此,您需要在\r\n
之前以\n
格式发送标题。