我有一个 DAV 协议,它将带外数据存储在 url 锚点中,例如ghi
in DELETE /abc.def#ghi
。服务器是一个 Flask 应用程序。
tcpdump
我可以看到请求通过/abc.def
. 已#ghi
被剥离。
是否有返回此信息的方法,或者我是否必须将 Request 子类化才能自己处理?如果是这样,有没有我可以作为灵感的例子?
我遇到了同样的问题。Facebook 身份验证 API 返回附加到重定向 url 的哈希后面的访问令牌。同样,Flask 的 request.url 将 URL 中的所有内容都放在哈希符号后面。
我也在使用 Flask,所以我认为您可以使用我的蛮力解决方法,使用 Javascript 的 window.location.href 来获取完整的 URL。然后,我刚刚提取了我需要的部分(访问令牌),将其放入重定向 URL 中,我可以将访问令牌作为参数传递给接收视图函数。这是代码:
@app.route('/app_response/<response>', methods=['GET'])
def app_response_code(response):
return ''' <script type="text/javascript">
var token = window.location.href.split("access_token=")[1];
window.location = "/app_response_token/" + token;
</script> '''
@app.route('/app_response_token/<token>/', methods=['GET'])
def app_response_token(token):
return token
如果您设法(d)在 Werkzeug 中执行此操作,我很想知道如何做。
来自维基百科(片段标识符)(没有时间在 RFC 中找到它):
片段标识符的功能与 URI 的其余部分不同:即,它的处理完全是客户端,没有服务器参与
因此 Flask - 或任何其他框架 - 无法访问#ghi
.
您可以使用flask.url_for和_anchor
关键字参数来做到这一点:
url_for('abc.def', _anchor='ghi')