На жаль, простий сервер HTTP насправді настільки простий, що не дозволяє здійснювати будь-які настройки, особливо не для заголовків, які він надсилає. Однак ви можете створити простий сервер HTTP самостійно, використовуючи більшість SimpleHTTPRequestHandler
, і просто додати потрібний заголовок.
Для цього просто створіть файл simple-cors-http-server.py
(або будь-який інший) і, залежно від версії Python, яку ви використовуєте, покладіть всередину один із наведених нижче кодів.
Тоді ви можете зробити python simple-cors-http-server.py
це, і він запустить ваш змінений сервер, який встановить заголовок CORS для кожної відповіді.
З шебангом вгорі, зробіть файл виконуваним і помістіть його у свій PATH, і ви можете просто запустити його, використовуючи simple-cors-http-server.py
також.
Розчин Python 3
Python 3 використовує SimpleHTTPRequestHandler
і HTTPServer
з http.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)
Розчин Python 2
Python 2 використовує SimpleHTTPServer.SimpleHTTPRequestHandler
і BaseHTTPServer
модуль для запуску сервера.
#!/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 & 3
Якщо вам потрібна сумісність як для Python 3, так і для Python 2, ви можете використовувати цей поліглот-скрипт, який працює в обох версіях. Спочатку він намагається імпортувати з локацій Python 3, а в іншому випадку повертається до 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)