强制路由到HTTPS

时间:2019-07-28 18:41:56

标签: laravel laravel-blade http-status-code-301 http-status-code-302 backpack-for-laravel

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

所以起初我在加载资产时遇到了麻烦,因为它使用了http作为图像和CSS

  

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

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

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 

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

但是以某种方式未通过https加载某些关键内容,这是屏幕截图: The Inspected Elements was for File Manaer Side Bar

出现错误

  

从原点“ http://example.com/admin/elfinder/connector”到“ https://example.com”处对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>

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

我认为我可以将meta标签复制粘贴到Backpack_url,但我不知道它在哪里或如何工作。

我对此很陌生,任何建议都值得赞赏

谢谢!

1 个答案:

答案 0 :(得分:2)

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

首先,请确保您的trusted proxy configuration是正确的。这将导致Laravel信任X-Forwarded-Protocol标头,并进行内生以生成正确的https URL。

如果无法使代理配置正常工作,则可以始终通过在https中添加URL来强制生成AppServiceProvider

if($this->app->environment('production')) {
    \URL::forceScheme('https');
}