强制 Laravel 使用 HTTPS
54

前言

在今年,全站 HTTPS 已经成为各大网站的标配。HTTPS 能使我们的浏览更加安全,用户隐私更加不易被泄露,几大浏览器也会在未来将不是 HTTPS 的网站标记为不安全。Let’s Encrypt 的出现也使网站申请证书成为一件平民化的事情,强力推荐你将你的网站全面升级成为 HTTPS。那在 Laravel 中该如何配置使全站变为 HTTPS 呢?答案其实很简单。

强制 Laravel 使用 HTTPS

在你的Providers\AppServiceProviderboot方法中添加:

    \URL::forceScheme('https');

Done. 现在你的所有生成的路由链接已经默认是 HTTPS 了。当然你也可以用 Nginx 来做非 HTTPS 跳转,只是我觉得这个方法更加简单。

注意:forceScheme这个函数在5.4的时候更换过名称, L5.3 及以下版本请使用\URL::forceSchema('https');

Enjoy :tada:

本帖由 Summer 于 1年前 加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 11

在创建route的时候参数上加上 https => true 也是好方法

1年前
mostwin

forceSchema还是forceScheme?

1年前

@mostwin 应该是5.4更换了函数名称,具体可以看一下这个 commit 。5.3及以下应该用\URL::forceSchema('https');,我改下文章提醒下。

1年前
mostwin

@young good!Markdown

1年前

@mostwin :smiling_imp:

1年前

我来补充一个问题&解决方案

当项目中强制启用 Https 后,假使项目中使用了 laravel/passport ,就会遇到

You must set the encryption key going forward to improve the security of this library - see this page for more information https://oauth2.thephpleague.com/v5-security-improvements/

解决方案是将 composer.json

"laravel/passport": "^2.0"

调整成

"laravel/passport": "^3.0"
1年前

@young 请问楼主的这个方法可不可以强制下面两种情况:
1 用户手动在浏览器输入 http 地址?
2 前端页面的 http 地址?
这两种如果都没有办法强制的话,可没法说强制 laravel 使用 https 哦

1年前
LeO荣

@reatang
例如:Route::get('/', 'TestController@index')->name('index');
你说的https => true应该加在什么位置?

1年前

@LeO荣 你用户这种的话,那么就是:

Route::get('/', ['uses' => 'TestController@index', 'https'])->name('index')

如果用group的话就是:

Route::group(['https'], function(){
//some routes
})
1年前
LeO荣

@reatang 十分感谢!

1年前

You also need to set https route in laravel. For that make sure that you have set AllowOverride to all. It is set to None by default sometimes. You can find complete Laravel ssl implementation tutorial here: https://www.cloudways.com/blog/how-to-setup-https-ssl-certificates-on-laravel-5/

2个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!