#!/usr/bin/env python3 import http.server import socketserver import sys import os class CORSHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): def end_headers(self): self.send_header('Access-Control-Allow-Origin', '*') self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS') self.send_header('Access-Control-Allow-Headers', '*') self.send_header('Cache-Control', 'no-store, no-cache, must-revalidate') self.send_header('Pragma', 'no-cache') self.send_header('Expires', '0') super().end_headers() def do_OPTIONS(self): self.send_response(200) self.end_headers() def log_message(self, format, *args): pass def handle_one_request(self): try: super().handle_one_request() except ConnectionAbortedError: pass except: pass def get_local_ip(): import socket try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8', 80)) ip = s.getsockname()[0] s.close() return ip except: return '127.0.0.1' def run_server(port=8000): handler = CORSHTTPRequestHandler with socketserver.TCPServer(("", port), handler) as httpd: local_ip = get_local_ip() print(f"服务器启动成功!") print(f"本地访问: http://localhost:{port}") print(f"局域网访问: http://{local_ip}:{port}") print(f"按 Ctrl+C 停止服务器") print("-" * 50) try: httpd.serve_forever() except KeyboardInterrupt: print("\n服务器已停止") httpd.server_close() if __name__ == "__main__": if len(sys.argv) > 1: port = int(sys.argv[1]) else: port = 8000 run_server(port)