栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在简单的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)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653482.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号