为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 中真正强制 http 到 https

在 Laravel 中真正强制 http 到 https

PHP
繁星点点滴滴 2022-06-17 15:25:06
我有这个 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?
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

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

默认情况下,Laravel 不信任这些标头(因为在不同的设置中它可能来自恶意客户端),因此不会将任何请求检测为 HTTPS。你可以通过配置 Laravel 可信代理来信任头部来解决这个问题。

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


查看完整回答
反对 回复 2022-06-17
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

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

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


查看完整回答
反对 回复 2022-06-17
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

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


$pagi=$answers->simplePaginate(3); 

$pagi->withPath("https://link/xxx/"); 

return $pagi; 


查看完整回答
反对 回复 2022-06-17
  • 3 回答
  • 0 关注
  • 301 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信