为何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
相关产品推荐
相关产品推荐

