Leider ist der einfache HTTP-Server wirklich so einfach, dass er keine Anpassung zulässt, insbesondere nicht für die von ihm gesendeten Header. Sie können jedoch mit den meisten selbst einen einfachen HTTP-Server erstellen SimpleHTTPRequestHandler
und einfach den gewünschten Header hinzufügen.
Erstellen Sie dazu einfach eine Datei simple-cors-http-server.py
(oder was auch immer) und fügen Sie je nach verwendeter Python-Version einen der folgenden Codes ein.
Dann können Sie dies tun python simple-cors-http-server.py
und Ihr geänderter Server wird gestartet, wodurch der CORS-Header für jede Antwort festgelegt wird.
Machen Sie die Datei mit dem Shebang oben ausführbar und fügen Sie sie in Ihren PATH ein. Sie können sie auch einfach mit ausführen simple-cors-http-server.py
.
Python 3-Lösung
Python 3 verwendet SimpleHTTPRequestHandler
und HTTPServer
vom http.server
Modul , um den Server auszuführen:
#!/usr/bin/env python3
from http.server import HTTPServer, SimpleHTTPRequestHandler, test
import sys
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
test(CORSRequestHandler, HTTPServer, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000)
Python 2-Lösung
Python 2 verwendet SimpleHTTPServer.SimpleHTTPRequestHandler
und das BaseHTTPServer
Modul , um den Server auszuführen.
#!/usr/bin/env python2
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
BaseHTTPServer.test(CORSRequestHandler, BaseHTTPServer.HTTPServer)
Python 2 & 3 Lösung
Wenn Sie Kompatibilität für Python 3 und Python 2 benötigen, können Sie dieses polyglotte Skript verwenden, das in beiden Versionen funktioniert. Es wird zunächst versucht, von den Python 3-Speicherorten zu importieren, andernfalls wird auf Python 2 zurückgegriffen:
#!/usr/bin/env python
try:
# Python 3
from http.server import HTTPServer, SimpleHTTPRequestHandler, test as test_orig
import sys
def test (*args):
test_orig(*args, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000)
except ImportError: # Python 2
from BaseHTTPServer import HTTPServer, test
from SimpleHTTPServer import SimpleHTTPRequestHandler
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
test(CORSRequestHandler, HTTPServer)