2015-04-17 55 views
2

我正在Python中構建代理服務器,我有一個問題。 首先,我將向您展示我的代碼的一部分,它提供了來自客戶端的接收數據:如果有來自客戶端的數據,它將下載所請求網站的內容(通過使用urllib庫),然後發送到客戶端200確定內容長度和內容本身:Python代理 - 從服務器接收http標頭

 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() 

**變量「主機」包含網站的網址。

現在對於這個問題: 我從哪裏得到服務器的頭文件然後發送給客戶端?

**我使用的庫:socket,select,urllib。

**這是對於選擇庫:

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

回答

0

HTTP響應語法如下

HTTP/1.1 200 OK
的Content-Type:text/html的
內容長度:38

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

因此,您需要在\r\n之前發送標題,以\n以上述格式分隔。