Skip to content

Instantly share code, notes, and snippets.

@chenzx
Created April 8, 2013 06:21
Show Gist options
  • Select an option

  • Save chenzx/5334629 to your computer and use it in GitHub Desktop.

Select an option

Save chenzx/5334629 to your computer and use it in GitHub Desktop.
A smart http server which can send 304 response when request header has "If-Modified-Since" set, Used for browser's http disk cache functional test.
import SimpleHTTPServer
import BaseHTTPServer
import time
import SocketServer
import os
import threading
import socket
PORT = 8888
class MyThreadingHTTPServer(SocketServer.ThreadingTCPServer):
pass
class MySmartHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def send_head(self):
if self.headers.get('If-Modified-Since',None) or self.headers.get('If-None-Match',None):
self.send_response(304)
self.end_headers()
return None
return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)
def send_header(self, head, value):
print "%s: %s" %(head, value)
SimpleHTTPServer.SimpleHTTPRequestHandler.send_header(self, head, value)
def end_headers(self):
self.send_header('Cache-control', 'must-revalidate')
SimpleHTTPServer.SimpleHTTPRequestHandler.end_headers(self)
s = MyThreadingHTTPServer(("", PORT), MySmartHTTPRequestHandler)
s.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment