दुर्भाग्य से, सरल HTTP सर्वर वास्तव में इतना सरल है कि यह किसी भी अनुकूलन की अनुमति नहीं देता है, विशेष रूप से हेडर के लिए नहीं जो इसे भेजता है। आप हालांकि, अधिकांश का उपयोग करके अपने आप को एक सरल HTTP सर्वर बना सकते हैं SimpleHTTPRequestHandler
, और बस उस इच्छित शीर्ष लेख को जोड़ सकते हैं।
उसके लिए, बस एक फ़ाइल simple-cors-http-server.py
(या जो कुछ भी) बनाएं और, आपके द्वारा उपयोग किए जा रहे पायथन संस्करण के आधार पर, निम्न में से एक कोड को अंदर रखें।
तब आप कर सकते हैं python simple-cors-http-server.py
और यह आपके संशोधित सर्वर को लॉन्च करेगा जो हर प्रतिक्रिया के लिए कॉर्स हेडर सेट करेगा।
शीर्ष पर Shebang के साथ , फ़ाइल को निष्पादन योग्य बनाएं और इसे अपने PATH में डालें, और आप इसे केवल उपयोग करके simple-cors-http-server.py
भी चला सकते हैं।
अजगर 3 समाधान
अजगर 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)
अजगर 2 समाधान
पायथन 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)
पायथन 2 और 3 समाधान
यदि आपको Python 3 और Python 2 दोनों के लिए संगतता की आवश्यकता है, तो आप इस पॉलीग्लॉट स्क्रिप्ट का उपयोग कर सकते हैं जो दोनों संस्करणों में काम करती है। यह पहले पायथन 3 स्थानों से आयात करने की कोशिश करता है, और अन्यथा अजगर 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)