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

使用Dio获取服务器响应时遇到问题

解决Dio 5.4.1请求返回JS跳转代码的问题

返回的window.onload=function(){window.location.href="/lander?codes=privacy-policy%2Cuser-agreement%2Crecharge-page%2Ctrading-rule%2Ccustomer-service"}是服务器的跳转逻辑,说明你的请求未通过服务器校验,以下是具体解决方法:

  • 模拟浏览器请求头
    服务器通常会校验User-Agent判断是否为合法客户端,给Dio添加标准浏览器UA:

    dio.options.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
    

    若目标接口有Referer校验,补充对应Referer头:

    dio.options.headers['Referer'] = '目标页面的URL';
    
  • 携带合规Cookie
    如果服务器需要会话验证,先通过浏览器访问目标站点获取有效Cookie,添加到Dio请求头:

    dio.options.headers['Cookie'] = '从浏览器复制的Cookie字符串';
    

    也可以使用cookie_jar插件配合Dio的CookieManager自动管理Cookie,避免手动维护。

  • 检查请求合法性
    确认请求的HTTP方法(GET/POST)、参数(查询参数/表单数据)是否与接口文档完全匹配,避免漏传必要参数导致服务器拒绝正常响应。

  • 禁用自动重定向排查
    Dio默认会自动跟随3xx重定向,禁用后可查看原始响应的跳转目标,定位校验逻辑:

    dio.options.followRedirects = false;
    dio.options.validateStatus = (status) => status! < 500; // 允许处理3xx状态码
    

    之后查看响应头的Location字段,明确服务器跳转意图后针对性处理。

  • 应对反爬验证
    若服务器有反爬机制(如验证码、签名Token),需先完成对应验证流程,获取验证凭证后再携带凭证发起请求。

内容的提问来源于stack exchange,提问作者Am Koem Heang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:48:26