使用Flask保护其他Web应用程序

时间:2016-12-29 16:34:47

标签: python flask

我有一个不安全的网络应用程序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开始使用该服务。

1 个答案:

答案 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')

我从http://flask.pocoo.org/snippets/118/

借用了大部分内容