我正在尝试重定向到一个带烧瓶的石墨网址。我正在构建的graphite url非常复杂,必须包含文本字符{、}和|。烧瓶正在逃逸到%7B%7C
和%7D
有什么办法我能阻止吗?在graphite方面,我想要一个如下所示的目标:sumSeries({metric | metric})
@app.route("/")
def index():
instances = get_data()
url = build_graphite_url(instances)
print url
return redirect(url)
Tags:
如果您深入研究烧瓶源代码,您最终会遇到一个名为get_wsgi_headers的函数包装器.py在werkzeug下:See here。在
这个函数在创建并返回最终响应时被调用,如果您向下滚动一点,就会发现它会检查是否设置了位置标头,如果设置了,则会进行一些自动更正,以确保url是绝对的。在此期间,它需要转义url,这就是为什么要转义url。在
据我所知,防止这种情况发生的唯一方法是修补获取\u wsgi_headers,这样它基本上不会逃过某些字符,因为毕竟Flask是开源的:)
另请注意,您不能监听after-request回调并修改响应头的原因是因为werkzeug的get_wsgi_headers是在回调之后调用的,因此无论您在回调中设置了什么位置,最终也会被转义。在
相关问题 更多 >
编程相关推荐