Flask 通过 url 变量传递另一个 url

Flask passing another url through url variable

我正在尝试通过 Flask 从头开始​​构建一个 cors 代理。这是我的代码

@app.route('/api/v1/cors/url=<name>&method=<method>', methods=['GET'])
def api_cors(name, method):
    if method == 'http' or method == 'https':
        r = request.urlopen(method+"://"+name)
        return r.read()
    else:
        return "method not set!"

到目前为止它运行良好,但我有一个问题,当我通过 "url=google.com&method=https" 它工作正常但是当我通过 "url=google.com/images/image.jpg&method=https" 之类的东西时,“/”将被视为一个新目录

有没有办法在烧瓶中规避这个?

不要尝试将值作为路由本身的一部分传递。将其作为查询参数传递。

@app.route('/api/v1/cors/')
def api_cors():
    url = request.args.get('url')

并将其命名为 "/api/v1/cors/?url=https://google.com/images/image.jpg"

如果您想使用与现在相同的 URL 方案,请将您的路由装饰器更改为此,它将起作用。

@app.route('/api/v1/cors/url=<path:name>&method=<method>', methods=['GET'])