參考資訊:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
https://stackoverflow.com/questions/37445901/how-to-return-http-303-from-python
server.py
from http.server import HTTPServer, BaseHTTPRequestHandler class WebServerHandler(BaseHTTPRequestHandler): def do_GET(self): r = self.path.split('/') self.send_response(int(r[-1])) self.send_header('Content-type', 'text/html') self.send_header('Location', 'http://www.example.com') self.end_headers() def do_POST(self): self.send_response(200) self.send_header('Content-type', 'text/html') self.send_header('Location', '/') self.end_headers() def main(): try: port = 8080 server = HTTPServer(('', port), WebServerHandler) print("Web server is running on port {}".format(port)) server.serve_forever() except KeyboardInterrupt: print("^C entered, stopping web server...") server.socket.close() if __name__ == '__main__': main()
client.py
import sys import requests response = requests.get('http://127.0.0.1:8080/{}'.format(sys.argv[1])) print(f'status code: {response.status_code}')
測試
$ sudo python3 ./server.py& $ sudo python3 ./client.py 300 status code: 300 $ sudo python3 ./client.py 400 status code: 400