參考資訊:
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