"""Local-only 303/307 demonstration. No external redirects or saved requests.""" from http.server import BaseHTTPRequestHandler, HTTPServer import argparse class Handler(BaseHTTPRequestHandler): def log_message(self,*args):pass def reply(self,method,body=''): text=(method+' | '+body+'\n').encode();self.send_response(200);self.send_header('Content-Type','text/plain; charset=utf-8');self.send_header('Content-Length',str(len(text)));self.end_headers();self.wfile.write(text) def do_GET(self): if self.path=='/target':self.reply('GET') else:self.send_error(404) def do_POST(self): try:length=int(self.headers.get('Content-Length','0')) except ValueError:self.send_error(400);return if length<0 or length>1024:self.send_error(413);return body=self.rfile.read(length).decode('utf8',errors='replace') if self.path in ['/start303','/start307']: self.send_response(303 if self.path=='/start303' else 307);self.send_header('Location','/target');self.send_header('Content-Length','0');self.end_headers() elif self.path=='/target':self.reply('POST',body) else:self.send_error(404) if __name__=='__main__': p=argparse.ArgumentParser();p.add_argument('--port',type=int,default=8797);a=p.parse_args();HTTPServer(('127.0.0.1',a.port),Handler).serve_forever()