我有一个不安全的网络应用程序Foo,我想使用Flask保护它,此Flask应用程序中也会有更多功能。
Foo可以通过8081端口访问.Foo和这个Flask网站在同一台服务器上。
我是否必须按如下方式重写Foo中的每个终点?
@app.route('/overview')
def foo_overview():
if check_token():
r = requests.get("http://localhost:8081/overview")
return r.content
else:
return redirect('/login')
或者有没有方便的方法来打开到localhost的隧道?
@app.route('/')
def foo_app():
if check_token():
# port 8081 now is opened for this connection
url = tunnel("http://localhost:8081")
return redirect(url)
else:
return redirect('/login')
我的想法是不打开端口8081,但打开80,所以用户从端口80开始,如果通过安全检查,他们可以在8081开始使用该服务。
答案 0 :(得分:0)
from flask import stream_with_context
@app.route('/<path:path>')
def foo_app(path):
if check_token():
# port 8081 now is opened for this connection
req = requests.get("http://localhost:8001/%s"%path, stream = True)
return Response(stream_with_context(req.iter_content()), content_type = req.headers['content-type'])
else:
return redirect('/login')
借用了大部分内容