在werkzeug请求中检索url锚点

dla*_*and 9 anchor werkzeug flask

我有一个DAV协议,可以在url锚点中存储带外数据,例如ghiin DELETE /abc.def#ghi.该服务器是Flask应用程序.

我可以通过线路看到请求tcpdump,但是当我查看werkzeug请求对象(例如url()或base_url())时,我得到的全部是/abc.def.在#ghi已经剥离出来.

是否有一个返回此信息的方法,或者我是否必须继承Request来自行处理此信息?如果是这样,有一个例子我可以用作灵感吗?

joe*_*.ct 13

我遇到了同样的问题.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
Run Code Online (Sandbox Code Playgroud)

如果你管理(d)在Werkzeug内做这件事,我很想知道如何做.

  • 哦,我没有抱怨......我做了upvote它 (4认同)

Zor*_*ric 13

来自维基百科(片段标识符)(没有时间在RFC中找到它):

片段标识符的功能与URI的其余部分不同:即,它的处理完全是客户端的,没有服务器的参与

所以Flask - 或任何其他框架 - 无法访问#ghi.