【问题标题】:Really force http to https in Laravel在 Laravel 中真正强制 http 到 https
【发布时间】:2020-04-06 09:04:30
【问题描述】:

我有这个 Laravel 应用程序,我正在向 Heroku 发送该应用程序。 我已经按照所有步骤进行操作,直到遇到与某些资产(例如,asset('css/app.css'))相关的问题,这些资产引用的是 http url,而不是 https url。

我通过添加解决了这个问题

if(config('app.env')==='production'){
            \URL::forceScheme('https');
}

在我的 AppServiceProvider.php 文件的启动方法中,它起作用了。

但是现在又遇到了一个之前的代码解决不了的http相关问题。

我正在使用 simplePaginate() 函数来获取我的数据

    public function index(Question $question){
        $answers = $question->answers()->with('user');
        return  $answers->simplePaginate(3);
    }

此代码返回我的 3 个答案以及名为“next_page_url”的属性的响应 这仍然是普通的 http(不是我需要的 https)。

按照 Heroku 的要求,我该怎么做才能成为 https?

【问题讨论】:

  • 你配置好 Laravel 的可信代理了吗? laravel.com/docs/5.8/requests#configuring-trusted-proxies 没有这个,它无法检测到 Heroku 通过 HTTPS 提供服务。
  • @ceejayoz,该文件已经创建,就像在文档示例中一样,但问题仍然存在
  • @ceejayoz,现在我实际上设置了受保护的 $proxies = '*',它现在可以工作了。非常感谢。如果您足够关心将其发布为答案(而不是评论),我将选择它作为最佳答案。否则我会选择 Alexander Emilianov 的。
  • 很高兴有帮助。我已经添加了答案。

标签: php laravel heroku


【解决方案1】:

Heroku 的负载平衡设置意味着请求是 HTTP 还是 HTTPS 的指示来自 X-Forwarded-Proto 标头。 (顺便说一句,Laravel 还需要the X-Forwarded-For header 来获取用户的真实 IP 地址。)

默认情况下,Laravel 不信任这些标头(因为在不同的设置中它可能来自恶意客户端),因此不会将任何请求检测为 HTTPS。您可以通过configuring the Laravel trusted proxy 修复此问题以信任标头。

在默认配置中,只需设置 $proxies = '*', 即可,并且在 Heroku 上是安全的,因为最终用户无法绕过负载均衡器。

【讨论】:

    【解决方案2】:

    正确的做法是在配置文件(以.env文件为例)中将你应用的URL改为https://example.com。只写APP_URL=https://example.com

    但是,当您使用 Heroku - 他们的平衡器可以通过 HTTP 将您的请求路由到 https://yourDomain.com 到您的应用程序。因此,Laravel 应用接收到http://yourDomain.com 的请求并决定您需要一个带有 HTTP 链接的响应。

    正如@seejayoz 所说,您需要配置受信任的proxies list for your app

    【讨论】:

      【解决方案3】:

      我认为你可以使用 withPath(或 setPath 别名):

      $pagi=$answers->simplePaginate(3); 
      $pagi->withPath("https://link/xxx/"); 
      return $pagi; 
      

      【讨论】:

        猜你喜欢
        • 2019-05-01
        • 2020-08-09
        • 2014-08-15
        • 2016-11-14
        • 2018-03-15
        • 2019-01-10
        • 1970-01-01
        • 2017-08-30
        • 1970-01-01
        相关资源
        最近更新 更多