强制 Laravel 使用 HTTPS
前言
在今年,全站 HTTPS 已经成为各大网站的标配。HTTPS 能使我们的浏览更加安全,用户隐私更加不易被泄露,几大浏览器也会在未来将不是 HTTPS 的网站标记为不安全。Let’s Encrypt 的出现也使网站申请证书成为一件平民化的事情,强力推荐你将你的网站全面升级成为 HTTPS。那在 Laravel 中该如何配置使全站变为 HTTPS 呢?答案其实很简单。
强制 Laravel 使用 HTTPS
在你的Providers\AppServiceProvider的boot方法中添加:
\URL::forceScheme('https');
Done. 现在你的所有生成的路由链接已经默认是 HTTPS 了。当然你也可以用 Nginx 来做非 HTTPS 跳转,只是我觉得这个方法更加简单。
注意:forceScheme这个函数在5.4的时候更换过名称, L5.3 及以下版本请使用\URL::forceSchema('https');。
Enjoy :tada:
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer
于 8年前 加精
关于 LearnKu
在创建route的时候参数上加上 https => true 也是好方法
是
forceSchema还是forceScheme?@mostwin 应该是5.4更换了函数名称,具体可以看一下这个 commit 。5.3及以下应该用
\URL::forceSchema('https');,我改下文章提醒下。@young good!
@mostwin :smiling_imp:
我来补充一个问题&解决方案
当项目中强制启用 Https 后,假使项目中使用了
laravel/passport,就会遇到解决方案是将
composer.json调整成
@young 请问楼主的这个方法可不可以强制下面两种情况:
1 用户手动在浏览器输入 http 地址?
2 前端页面的 http 地址?
这两种如果都没有办法强制的话,可没法说强制
laravel使用 https 哦@reatang
例如:Route::get('/', 'TestController@index')->name('index');
你说的https => true应该加在什么位置?
@LeO荣 你用户这种的话,那么就是:
如果用group的话就是:
@reatang 十分感谢!
这个方法可以让所有路由地址转变成 HTTPS。但是碰到一个问题,如果是302跳转的地址则无法转成 HTTPS,比如:Laravel登录成功后跳转到 dashboard 首页,打开的页面里包含的链接地址都是HTTPS,但是浏览器地址栏里的URL 依然是HTTP,这个该怎么解决?