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 SimpleHTTPRequestHandler
ve 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.py
ve 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.py
da çalıştırabilirsiniz .
Python 3 çözümü
Python 3 kullanır SimpleHTTPRequestHandler
ve HTTPServer
gelen http.server
modü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.SimpleHTTPRequestHandler
ve BaseHTTPServer
modü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)