Flask重定向URL转义

2024-06-16 14:22:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试重定向到一个带烧瓶的石墨网址。我正在构建的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: instances文本appurl目标烧瓶字符metric
1条回答
网友
1楼 · 发布于 2024-06-16 14:22:38

如果您深入研究烧瓶源代码,您最终会遇到一个名为get_wsgi_headers的函数包装器.py在werkzeug下:See here。在

这个函数在创建并返回最终响应时被调用,如果您向下滚动一点,就会发现它会检查是否设置了位置标头,如果设置了,则会进行一些自动更正,以确保url是绝对的。在此期间,它需要转义url,这就是为什么要转义url。在

据我所知,防止这种情况发生的唯一方法是修补获取\u wsgi_headers,这样它基本上不会逃过某些字符,因为毕竟Flask是开源的:)

另请注意,您不能监听after-request回调并修改响应头的原因是因为werkzeug的get_wsgi_headers是在回调之后调用的,因此无论您在回调中设置了什么位置,最终也会被转义。在

相关问题 更多 >