2014-10-29 3 views
0

기본적으로 SimpleHTTPServer는 자신의 헤더를 보냅니다.SimpleHTTPServer 사용자 정의 헤더

나는 내 머리글을 보내는 방법을 알아 내려고 노력해 왔으며 this solution을 찾았습니다. 나는 나의 (매우) 간단한 프록시에 적응 시도 :

import SocketServer 
import SimpleHTTPServer 
import urllib 

class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler): 
    headers = ['Date: Wed, 29 Oct 2014 15:54:43 GMT', 'Server: Apache', 'Accept-Ranges: bytes', 'X-Mod-Pagespeed: 1.6.29.7-3566', 'Vary: Accept-Encoding', 'Cache-Control: max-age=0, no-cache', 'Content-Length: 204', 'Connection: close', 'Content-Type: text/html'] 

    def end_headers(self): 
    print "Setting custom headers" 
    self.custom_headers() 

    SimpleHTTPServer.SimpleHTTPRequestHandler.end_headers(self) 

    def custom_headers(self): 
    for i in self.headers: 
     key, value = i.split(":", 1) 
     self.send_header(key, value) 

    def do_GET(self): 
     self.copyfile(urllib.urlopen(self.path), self.wfile) 

httpd = SocketServer.ForkingTCPServer(('', PORT), Proxy) 
httpd.serve_forever() 

그러나 end_headers()가 (와이어 샤크에서 확인) 사용자 정의 헤더를 설정하지 않습니다.

headers이 내 작은 스 니펫에있는 것과 같습니다. 어떻게하면 SimpleHTTPServer's 기본 헤더와 서버를 덮어 쓸 수 있습니까?

+0

[가능한 복제본] (http://stackoverflow.com/questions/22308786/python-simplehttpserver-change-response-header/22309792#22309792)? – Noelkd

답변

0

나는 당신이 무언가를 do_GET()에 놓친다 고 생각합니다. SimpleHTTPServer 또한

  • self.send_response(200)

당신이 할과를 읽고 싶은 것에 대해 난 당신이 send_head() 메소드를 오버라이드 (override) 할 생각에 다음 코드 또는 더 나은 모듈 SimpleHTTPServer

 self.send_response(200) 
     self.send_header("Content-type", ctype) 
     fs = os.fstat(f.fileno()) 
     self.send_header("Content-Length", str(fs[6])) 
     self.send_header("Last-Modified", self.date_time_string(fs.st_mtime)) 
     self.end_headers() 

를 참조 호출 소스는 SimpleHTTPServer입니다.