Desafortunadamente, el servidor HTTP simple es realmente tan simple que no permite ninguna personalización, especialmente no para los encabezados que envía. Sin embargo, puede crear un servidor HTTP simple usted mismo, utilizando la mayor parte SimpleHTTPRequestHandler
, y simplemente agregar el encabezado deseado.
Para eso, simplemente cree un archivo simple-cors-http-server.py
(o lo que sea) y, dependiendo de la versión de Python que esté usando, coloque uno de los siguientes códigos dentro.
Luego puede hacerlo python simple-cors-http-server.py
y lanzará su servidor modificado que configurará el encabezado CORS para cada respuesta.
Con el shebang en la parte superior, haga que el archivo sea ejecutable y colóquelo en su PATH, y puede ejecutarlo usando simple-cors-http-server.py
también.
Solución Python 3
Python 3 usa SimpleHTTPRequestHandler
y HTTPServer
del http.server
módulo para ejecutar el servidor:
#!/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)
Solución Python 2
Python 2 usa SimpleHTTPServer.SimpleHTTPRequestHandler
y el BaseHTTPServer
módulo para ejecutar el servidor.
#!/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)
Solución Python 2 y 3
Si necesita compatibilidad tanto para Python 3 como para Python 2, puede usar este script políglota que funciona en ambas versiones. Primero intenta importar desde las ubicaciones de Python 3 y, de lo contrario, recurre 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)