【问题标题】:Make Laravel use HTTPs by default让 Laravel 默认使用 HTTPS
【发布时间】:2022-01-18 21:11:04
【问题描述】:

我部署了我的网站,并使用此代码强制使用的协议是 HTTPs \Illuminate\Support\Facades\URL::forceScheme('https'); 在 AppServiceProvider 中。

当我访问我的网站时,它默认使用 HTTP,我必须在地址栏中手动将“http”更改为“https”,然后 SSL 证书工作正常,我可以安全地填写所有表格。

我怎样才能强制当用户访问网站时,HTTPs 不运行 HTTP

【问题讨论】:

标签: laravel ssl


【解决方案1】:

将此标签添加到您的根页面头部部分。(home.blade.php,welcome.blade.php ...)

<head>
... other tags
    @if(env('APP_ENV') === 'production')
    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    @endif
</head>

并在启动函数app/Providers/AppServiceProvider.php里面添加:

 public function boot()
    {
      if (env('APP_ENV') === 'production') {
          $this->app['request']->server->set('HTTPS', true);
      }
    }
}

【讨论】:

    【解决方案2】:

    我用\Illuminate\Support\Facades\URL::forceScheme('https'); 但是,我的第一个页面仍然是在 HTTP 中加载的,而其他后续请求是在 HTTPs 中。

    为了解决这个问题,我将“/”处的路由重定向到克隆路由“/welcome”,它返回“/”应该返回的视图。 从那时起,使用 HTTPs。

    我无法将 HTTP 重定向到服务器中的 HTTP,因为我使用 Elastic beanstalk 并且 /.ebextensions 配置文件中建议的命令不起作用,所以我的解决方案尽可能接近解决问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-28
      • 1970-01-01
      • 2019-02-17
      • 2023-03-29
      • 2016-08-14
      • 2021-11-29
      • 2018-06-29
      • 2014-01-09
      相关资源
      最近更新 更多