在简单的HTTP服务器上启用访问控制

在简单的HTTP服务器上启用访问控制,第1张

在简单的HTTP服务器上启用访问控制

不幸的是,简单的HTTP服务器是如此简单,以至于它不允许任何自定义,尤其是不允许其发送的标头。但是,您可以使用的大部分内容自己创建一个简单的HTTP服务器

SimpleHTTPRequestHandler
,而只需添加所需的标头即可。

为此,只需创建一个文件

simple-cors-http-server.py
(或其他文件),然后根据所使用的Python版本,将以下代码之一放入其中。

然后您可以做

python simple-cors-http-server.py
,它将启动您的修改后的服务器,该服务器将为每个响应设置CORS标头。

将shebang放在顶部,将文件设为可执行文件并将其放入PATH,您也可以使用它来运行

simple-cors-http-server.py

Python 3解决方案

Python
3使用

SimpleHTTPRequestHandler
HTTPServer
http.server
模块运行服务器:

#!/usr/bin/env python3from http.server import HTTPServer, SimpleHTTPRequestHandler, testimport sysclass 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 python2from SimpleHTTPServer import SimpleHTTPRequestHandlerimport baseHTTPServerclass 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 pythontry:    # 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 SimpleHTTPRequestHandlerclass CORSRequestHandler (SimpleHTTPRequestHandler):    def end_headers (self):        self.send_header('Access-Control-Allow-Origin', '*')        SimpleHTTPRequestHandler.end_headers(self)if __name__ == '__main__':    test(CORSRequestHandler, HTTPServer)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5655585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存