You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Flask会移除request.post中的+字符?如何在Flask端修复?

问题原因

这是因为application/x-www-form-urlencoded编码格式的标准规则:该格式下,+字符会被解析为空格。Flask底层依赖的Werkzeug库严格遵循这个HTTP标准,所以通过request.form读取数据时,所有+都会被自动转换为空格。

修复方案

由于无法修改请求端的发送方式和请求头,你可以直接读取原始请求数据,跳过Werkzeug的自动解析流程,从而保留+字符:

修改Flask服务端代码如下:

from flask import Flask, request, Response

app = Flask(__name__)

@app.route('/test', methods=['POST'])
def update_text():
    # 读取原始的请求文本数据,不会进行编码转换
    raw_request_data = request.get_data(as_text=True)
    print("原始数据:", raw_request_data)  # 输出:aaaaa+bbbbb
    
    # 如果请求是标准key=value格式,可手动解析并保留+
    # 示例:
    # from urllib.parse import unquote_plus
    # parsed_data = unquote_plus(raw_request_data)
    # unquote_plus仅解码%2B为+,不会将+转为空格
    
    return Response()

if __name__ == '__main__':
    app.run(port=6666)

内容的提问来源于stack exchange,提问作者Sasandra30

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:49:57