强制路由到 HTTPS

wls*_*onf 1 http-status-code-301 http-status-code-302 laravel laravel-blade laravel-backpack

我需要在实时服务器上设置 laravel 背包的帮助。

所以一开始我在加载资源时遇到了麻烦,因为它使用 http 作为图像和 css

http://example.com/images/http://example.com/css/

我可以使用我得到的代码解决这个问题

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 
Run Code Online (Sandbox Code Playgroud)

资产已正确加载(它显示https://example.com/images/ ...当我检查时)

但不知何故,一些关键内容没有通过 https 加载,截图如下: 检查的元素用于文件管理器侧栏

随着错误

从源“ https://example.com ”访问位于“ http://example.com/admin/elfinder/connector ”的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:重定向不允许用于预检请求。

这是错误的代码

  <!-- This file is used to store sidebar items, starting with Backpack\Base 0.9.0 -->
  <li>
    <a href="{{ backpack_url('dashboard') }}">
      <i class="fa fa-dashboard"></i>
      <span>{{ trans('backpack::base.dashboard') }}</span>
    </a>
  </li>
Run Code Online (Sandbox Code Playgroud)

还有一些内容没有更新为 https,例如一些 CSS(来自供应商/crud)、脚本、post 方法和徽标

我认为我可以将元标记复制粘贴到backpack_url,但我不知道它在哪里或它是如何工作的。

我对此很陌生,如有任何建议,我们将不胜感激

谢谢!

aty*_*mic 6

看起来您的 Laravel 安装认为您正在HTTP服务器上运行,而客户端的请求是通过 Laravel 发出的。HTTPS 这些问题通常是由于 Laravel 前面有代理而发生的。

首先,请确保您的可信代理配置正确。这将导致 Laravel 信任X-Forwarded-Protocol标头,并实习生生成正确的httpsURL。

如果您无法使代理配置正常工作,您始终可以https通过将其添加到您的AppServiceProvider

if($this->app->environment('production')) {
    \URL::forceScheme('https');
}
Run Code Online (Sandbox Code Playgroud)