首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleHTTPServer自定义报头

SimpleHTTPServer自定义报头
EN

Stack Overflow用户
提问于 2014-10-29 16:06:07
回答 1查看 5.4K关注 0票数 1

默认情况下,SimpleHTTPServer发送它自己的头。

我一直在努力弄清楚如何发送自己的头,并找到了这个解决方案。我尝试将它修改为我的(非常)简单的代理:

代码语言:javascript
复制
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()没有设置自定义头(在Wireshark上确认)。

给出一个类似于我的小片段中的headers的列表,我如何能够覆盖SimpleHTTPServer's的默认头和服务器自己的呢?

EN

回答 1

Stack Overflow用户

发布于 2014-10-29 19:41:25

我想你错过了do_GET()的一些东西。SimpleHTTPServer还调用

  • self.send_response(200)

请参阅以下代码或更好的模块SimpleHTTPServer

代码语言:javascript
复制
        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()

我认为您应该为要做的事情重写send_head()方法,并读取SimpleHTTPServer的源代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26635274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档