【问题标题】:# symbol chopping the URL text Flask Application# 截断 URL 文本的符号 Flask Application
【发布时间】:2017-07-18 15:14:41
【问题描述】:

我正在使用以下代码在浏览器上显示文本:

from flask import Flask, jsonify, make_response, request    
app = Flask(__name__)

@app.route('/api/v1.0/qanda/', methods=['GET'])

def people_api():
    text = request.args.get('text'.replace('#',' ' ))
    if text is None:
           make_response(jsonify({'error': 'Missing text parameter'}), 400)
    return text
app.run()

当我尝试这个时:

http://127.0.0.1:5000/api/v1.0/qanda/?text=adam is my name

我得到的输出是:

adam is my name

但是当我尝试这个时:

http://127.0.0.1:5000/api/v1.0/qanda/?text=adam# is my name

我得到的输出是:

adam

我尝试替换 # 符号,但没有成功。我想知道,如果我想使用上面的 URL 在浏览器中显示我的文本,我需要做什么?我想显示完整的文本,但只是因为# 符号出现了这个问题,这就是我想的。请给我建议。

【问题讨论】:

标签: python python-3.x flask


【解决方案1】:

您不能将# 作为请求参数中的值,例如?&/&=

如果您真的想将# 作为请求参数的值发送,那么您必须将其设置为URL encoded 才能将其发送到服务器。否则它永远不会像你期望的那样到达服务器。

对于# 的编码,您必须使用%23

因为您的请求 URL 应该是 http://127.0.0.1:5000/api/v1.0/qanda/?text=adam%23 is my name

【讨论】:

    【解决方案2】:

    # 符号,如 ? /&= 在用作 URL 的一部分时具有特殊含义。

    # 专门用于识别 HTML 中的命名锚点;因此浏览器不会将其作为请求的一部分发送。

    在提交之前使用空格或 URL 对字符串进行编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2011-09-17
      • 2016-10-18
      • 1970-01-01
      相关资源
      最近更新 更多