Ne yazık ki, basit HTTP sunucusu gerçekten o kadar basit ki, özellikle gönderdiği başlıklar için herhangi bir özelleştirmeye izin vermiyor. Bununla birlikte, çoğunu kullanarak basit bir HTTP sunucusu oluşturabilir SimpleHTTPRequestHandlerve istediğiniz başlığı ekleyebilirsiniz.
Bunun için bir dosya simple-cors-http-server.py(veya her neyse) oluşturun ve kullandığınız Python sürümüne bağlı olarak aşağıdaki kodlardan birini içine koyun.
O zaman yapabilirsiniz python simple-cors-http-server.pyve her yanıt için CORS başlığını ayarlayacak olan değiştirilmiş sunucunuzu başlatacaktır.
Üstteki shebang ile, dosyayı yürütülebilir hale getirin ve PATH'inize koyun ve onu kullanarak simple-cors-http-server.pyda çalıştırabilirsiniz .
Python 3 çözümü
Python 3 kullanır SimpleHTTPRequestHandlerve HTTPServergelen http.servermodül sunucusu çalıştırmak:
#!/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 çözümü
Python 2 , sunucuyu çalıştırmak için SimpleHTTPServer.SimpleHTTPRequestHandlerve BaseHTTPServermodülünü kullanır .
#!/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 ve 3 çözümü
Hem Python 3 hem de Python 2 için uyumluluğa ihtiyacınız varsa, her iki sürümde de çalışan bu çok dilli betiği kullanabilirsiniz. Önce Python 3 konumlarından içe aktarmaya çalışır, aksi takdirde Python 2'ye geri döner:
#!/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)