Sayangnya, server HTTP sederhana benar-benar sesederhana itu sehingga tidak memungkinkan penyesuaian apa pun, terutama untuk header yang dikirimnya. Namun Anda dapat membuat server HTTP sederhana sendiri, menggunakan sebagian besar SimpleHTTPRequestHandler
, dan cukup menambahkan header yang diinginkan.
Untuk itu, cukup buat file simple-cors-http-server.py
(atau apa pun) dan, tergantung pada versi Python yang Anda gunakan, masukkan salah satu kode berikut ke dalamnya.
Kemudian Anda bisa melakukannya python simple-cors-http-server.py
dan itu akan meluncurkan server Anda yang dimodifikasi yang akan mengatur header CORS untuk setiap respons.
Dengan shebang di bagian atas, buat file tersebut dapat dieksekusi dan masukkan ke PATH Anda, dan Anda juga dapat menjalankannya menggunakan simple-cors-http-server.py
.
Solusi Python 3
Python 3 menggunakan SimpleHTTPRequestHandler
dan HTTPServer
dari http.server
modul untuk menjalankan 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)
Solusi Python 2
Python 2 menggunakan SimpleHTTPServer.SimpleHTTPRequestHandler
dan BaseHTTPServer
modul untuk menjalankan server.
#!/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)
Solusi Python 2 & 3
Jika Anda memerlukan kompatibilitas untuk Python 3 dan Python 2, Anda dapat menggunakan skrip polyglot yang berfungsi di kedua versi ini. Pertama kali mencoba untuk mengimpor dari lokasi Python 3, dan sebaliknya kembali ke 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)