如何让Laravel Blade模板中route方法生成的路由始终使用HTTPS协议
解决方案
以下是几种可实现需求的配置方式,你可以根据自己的场景选择:
方法1:全局强制所有路由生成HTTPS链接(最推荐,适合全站HTTPS的场景)
- 第一步:修改项目根目录下的
.env文件,将APP_URL参数的值替换为你的HTTPS域名,示例如下:APP_URL=https://myexamplesite.com - 第二步:如果你的站点部署在反向代理、CDN或负载均衡服务之后,需要配置Laravel信任代理,打开
app/Http/Middleware/TrustProxies.php,修改$proxies属性为允许所有代理(也可填写你的实际代理IP段):protected $proxies = '*'; - 可选兜底配置:如果要强制所有场景下都生成HTTPS链接,忽略当前访问的协议,可在
app/Providers/AppServiceProvider.php的boot方法中添加如下代码:use Illuminate\Support\Facades\URL; public function boot() { URL::forceScheme('https'); }
修改配置后如果未立即生效,可以执行
php artisan config:clear清除配置缓存。
方法2:仅为指定路由配置HTTPS
如果不需要全站强制HTTPS,仅需要个别路由生成HTTPS链接,可以在路由定义时添加https中间件:
Route::post('send-user-email', 'SendUserEmailController@store')->name('send-email')->middleware('https');
方法3:临时生成HTTPS路由链接
你也可以直接替换Blade模板中的辅助函数,使用secure_route代替route,它会直接生成HTTPS协议的路由地址,修改后的表单代码如下:
<form method="POST" action="{{ secure_route('send-email') }}">
内容的提问来源于stack exchange,提问作者user2953989
相关产品推荐
相关产品推荐

