You need to enable JavaScript to run this app. Yii2应用中用$this->redirect()时Chrome将HTTPS重定向为HTTP的问题
优惠活动
大模型
产品
解决方案
定价
更多

Yii2应用中用$this->redirect()时Chrome将HTTPS重定向为HTTP的问题

Chrome端HTTPS跳转HTTP问题的排查解决步骤
  • 优先定位触发问题的核心版本逻辑
    此前Chrome及其他主流浏览器对无明确协议的相对路径跳转,默认会复用当前页面的HTTPS协议,近期Chrome稳定版推送后,该判断逻辑出现兼容偏差,这也是无代码改动前提下问题突然出现的最常见原因。
  • 调整Yii2侧的重定向生成逻辑
    不要依赖框架自动生成的相对路径重定向结果,在调用$this->redirect()时显式指定带HTTPS协议的完整跳转地址:
    // 调整前(默认生成相对路径,易触发Chrome协议判断偏差)
    return $this->redirect('success-page');
    // 调整后(强制生成带HTTPS协议的完整地址)
    return $this->redirect(Url::to(['success-page'], true), 302);
    
    同时核对config/web.php中urlManager的配置,确保hostInfo字段固定为https://你的域名,避免框架自动识别协议时出现误判。
  • 修正Yii2的代理信任配置
    如果应用部署在反向代理、负载均衡节点后,Yii2默认无法从原始请求中识别真实的HTTPS协议,会错误生成HTTP协议的重定向地址,需在应用初始化时补充信任代理规则:
    // 在web/index.php的应用初始化逻辑中添加
    $app->request->setTrustedProxies(
        ['你的代理服务IP段'],
        [\yii\web\Request::HEADER_X_FORWARDED_PROTO]
    );
    
  • 排查Chrome端的本地规则干扰
    完成后端配置调整后如果问题依然存在,按以下顺序排查本地浏览器问题:
    • 打开Chrome的安全设置,检查“始终使用安全连接”开关是否被异常关闭,该开关关闭时Chrome会对未显式指定协议的跳转自动回退为HTTP
    • 清除对应站点的全部缓存、Cookie与站点权限数据,排除旧的HTTP缓存规则强制覆盖HTTPS跳转的情况
    • 临时关闭所有代理、HTTPS优化类浏览器扩展,排除扩展拦截请求并改写协议的问题
  • 用开发者工具定位问题根因
    打开浏览器开发者工具的网络面板,复现表单提交操作,找到跳转对应的302响应,直接核对响应头的Location值:
    • 如果Location本身为http://开头的地址,问题属于后端配置范畴,按前述Yii2的调整步骤修改即可
    • 如果Location为相对路径、或https://开头的地址,问题属于Chrome端的兼容偏差,无需调整后端逻辑,清除站点缓存、更新Chrome到最新正式版即可解决。

内容的提问来源于stack exchange,提问作者Petr Kvasnička

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 07:54:04