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

Laravel 10登录后重定向至HTTP而非HTTPS问题求助

Laravel 10 登录后重定向至HTTP导致无法登录的解决方法

现有配置说明

已尝试的配置如下:

  • .env 文件配置:
APP_URL="https://doma.in"
ASSET_URL="https://doma.in"
APP_USE_HTTPS=true
FORCE_HTTPS=true
SESSION_DOMAIN="doma.in"
SESSION_SECURE_COOKIE=true
  • 在 AppServiceProvider 的 boot 方法中添加:
\URL::forceScheme('https');
  • 在 app.blade.php 中加入:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
  • 已执行所有Laravel清理命令(如 php artisan config:clear、php artisan cache:clear、composer dump-autoload 等)
  • 登录表单地址为 https://doma.in/login

问题现象

登录成功后系统自动重定向至 http://doma.in/home,导致无法正常进入系统。

针对性解决步骤

1. 检查认证路由的重定向逻辑

Laravel默认登录后的重定向由 RedirectIfAuthenticated 中间件或 LoginController 中的redirectTo属性/方法控制:

  • 打开 app/Http/Middleware/RedirectIfAuthenticated.php,确保重定向使用路由名称而非硬编码HTTP地址:
// 推荐用路由名称,自动适配协议
return redirect()->route('home');
  • 若使用 LoginController,检查redirectTo方法或属性,确保返回正确的路由名称或HTTPS地址:
protected function redirectTo()
{
    return route('home');
}

2. 服务器层面强制HTTPS(关键)

若Laravel内部配置生效但仍出现HTTP重定向,大概率是服务器未正确转发HTTPS请求头,导致Laravel误判请求协议:

  • Nginx:在站点配置中添加规则,强制跳转并传递HTTPS头:
server {
    listen 80;
    server_name doma.in;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name doma.in;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
        fastcgi_param HTTPS on;
        fastcgi_param HTTP_X_FORWARDED_PROTO https;
    }
    # 其他SSL配置...
}
  • Apache:在.htaccess中添加规则:
RewriteEngine On
# 强制HTTP跳转至HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 传递代理转发的HTTPS标识
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

3. 配置Laravel信任代理

若应用部署在反向代理(如Nginx、Cloudflare)后,需让Laravel信任代理以正确识别HTTPS请求:

  • 在 .env 中添加:
TRUSTED_PROXIES=*
  • 或在 config/app.php 中配置:
'trusted_proxies' => ['*'], // 生产环境建议指定具体代理IP
'trusted_headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_FOR | Illuminate\Http\Request::HEADER_X_FORWARDED_HOST | Illuminate\Http\Request::HEADER_X_FORWARDED_PORT | Illuminate\Http\Request::HEADER_X_FORWARDED_PROTO,

配置完成后执行 php artisan config:clear 生效。

4. 清除浏览器缓存

部分浏览器会缓存旧的重定向规则,建议清除缓存后重新测试登录流程。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:00:21