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

Flutter发送POST HTTP请求无法正确处理重定向获取跳转地址问题

Flutter POST请求重定向异常问题解决方案

问题根因

302变301、Location字段错误的核心原因有三点:

  1. 请求方法拼写不符合HTTP标准:代码中写的"Post"是首字母大写,HTTP规范要求请求方法必须为全大写的POST,大部分服务端路由规则对方法大小写敏感,错误的方法名会触发异常重定向逻辑,返回错误的301状态码。
  2. 缺少必要的请求头:当前请求没有携带浏览器发起请求时默认带的User-Agent、Referer等校验字段,服务端的安全规则会识别为非合法浏览器请求,返回错误的重定向地址。
  3. 提交表单数据未指定编码格式:提交的是x-www-form-urlencoded格式的表单数据,没有显式声明Content-Type,服务端无法正确解析请求体,触发错误跳转。

修复步骤

  • 把请求方法修改为全大写的POST
  • 补充必要的请求头,模拟浏览器的请求特征
  • 显式声明表单数据的编码格式

修正后的代码示例

http.Request req = http.Request("POST", uri)..followRedirects = false;
// 补充必要请求头,可从浏览器的请求详情中复制对应站点的实际请求头值
req.headers.addAll({
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
  'Content-Type': 'application/x-www-form-urlencoded',
  'Referer': uri.toString(),
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'
});
req.body = 'criterio=3&valor=$codigo&nombre_apellidos=&op=Buscar&form_build_id=$idForm&form_id=tracking_form';
http.Client baseClient = http.Client();
http.StreamedResponse response = await baseClient.send(req);

print(response.statusCode);
print(response.headers);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:06:02