【问题标题】:why flask ignores fragment identifier? [duplicate]为什么烧瓶忽略片段标识符? [复制]
【发布时间】:2018-03-12 19:58:53
【问题描述】:

我有一些从 url 获取一些输入的代码,我在这个输入上运行我的函数,这是我的代码的一部分:

@app.route('/input', methods=['POST', 'GET']) def index():
    if request.method == "GET":
        user_input = request.args.get('text')
        return myfunc(user_input)

当我输入例如这个输入时:

http://127.0.0.1:5000/input?text=some text

我会得到some text 作为用户输入。

当用户输入一些包含片段标识符的输入时出现问题......然后该标识符后面的文本将被忽略

例如来自这个输入:

http://127.0.0.1:5000/input?text=some text#blah blah blah

我只收到some text 而不是整个用户请求作为some text#blah blah blah

知道如何获取全文吗?

【问题讨论】:

  • 如何在客户端提取它们并通过查询参数或部分 URL 路径将它们传递给服务器? @ABDULNIYASPM
  • 字符串 some text#blah blah blah 是如何添加到 URL 中的?这很可能是您的错误所在:您可能没有正确执行 URL 转义。

标签: python flask


【解决方案1】:

您不能将“#”传递给查询字符串值。您必须将 # 替换为其 UTF-8 值 (%23)。请参阅下面的示例

http://127.0.0.1:5000/input?text=sometext%23blah blah blah

它对我有用。

【讨论】:

【解决方案2】:

您不能在# 之后将值发送到服务器端,因为它们是特定于浏览器的,并且在发送之前会被裁剪。

您可以在前端将查询字符串更改为 http://127.0.0.1:5000/input?text=some text&fragment=blah blah blah

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-12
    • 2016-03-31
    • 2018-07-12
    • 2021-08-21
    • 2012-11-29
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多