Malheureusement, le serveur HTTP simple est vraiment aussi simple qu'il ne permet aucune personnalisation, surtout pas pour les en-têtes qu'il envoie. Vous pouvez cependant créer vous-même un serveur HTTP simple, en utilisant la plupart desSimpleHTTPRequestHandler
, et ajouter simplement l'en-tête souhaité.
Pour cela, créez simplement un fichier simple-cors-http-server.py
(ou autre) et, selon la version Python que vous utilisez, mettez l'un des codes suivants à l'intérieur.
Ensuite, vous pouvez le faire python simple-cors-http-server.py
et il lancera votre serveur modifié qui définira l'en-tête CORS pour chaque réponse.
Avec le shebang en haut, rendez le fichier exécutable et placez-le dans votre PATH, et vous pouvez simplement l'exécuter en utilisant simple-cors-http-server.py
aussi.
Solution Python 3
Python 3 utilise SimpleHTTPRequestHandler
et HTTPServer
du http.server
module pour exécuter le serveur:
#!/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)
Solution Python 2
Python 2 utilise SimpleHTTPServer.SimpleHTTPRequestHandler
et le BaseHTTPServer
module pour exécuter le serveur.
#!/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)
Solution Python 2 et 3
Si vous avez besoin de compatibilité pour Python 3 et Python 2, vous pouvez utiliser ce script polyglotte qui fonctionne dans les deux versions. Il essaie d'abord d'importer à partir des emplacements Python 3, puis revient à 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)