Sfortunatamente, il semplice server HTTP è davvero così semplice da non consentire alcuna personalizzazione, soprattutto non per le intestazioni che invia. È tuttavia possibile creare un semplice server HTTP da soli, utilizzando la maggior parte di SimpleHTTPRequestHandler
e aggiungere semplicemente l'intestazione desiderata.
Per questo, crea semplicemente un file simple-cors-http-server.py
(o qualsiasi altra cosa) e, a seconda della versione di Python che stai utilizzando, inserisci uno dei seguenti codici all'interno.
Quindi puoi farlo python simple-cors-http-server.py
e lancerà il tuo server modificato che imposterà l'intestazione CORS per ogni risposta.
Con lo shebang in alto, rendi il file eseguibile e mettilo nel tuo PERCORSO, e puoi semplicemente eseguirlo usando simple-cors-http-server.py
anche tu .
Soluzione Python 3
Python 3 utilizza SimpleHTTPRequestHandler
e HTTPServer
dal http.server
modulo per eseguire il server:
#!/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)
Soluzione Python 2
Python 2 utilizza SimpleHTTPServer.SimpleHTTPRequestHandler
e il BaseHTTPServer
modulo per eseguire il server.
#!/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)
Soluzione Python 2 e 3
Se hai bisogno di compatibilità sia per Python 3 che per Python 2, puoi usare questo script poliglotta che funziona in entrambe le versioni. Prima tenta di importare dalle posizioni di Python 3, altrimenti torna a Python 2:
#!/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)