【发布时间】:2022-01-09 14:27:55
【问题描述】:
我正在使用Laravel Form 和https,但我在使用Form 组件时遇到了困难。出于某种原因,Laravel 总是为 Form 组件生成的所有 url 返回 http:// 协议。
这是我的.env:
APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=https://example.com
header.blade.php
{!! Form::open(['route' => 'boilerplate.logout', 'method' => 'post', 'id' => 'logout-form']) !!}
<button type="submit" class="btn nav-link d-flex align-items-center logout px-2" data-question="{{ __('boilerplate::layout.logoutconfirm') }}">
<span class="fa fa-fw fa-power-off hidden-xs pr-1"></span>
</button>
{!! Form::close() !!}
routes/boilerplate.php
Route::post('logout', [LoginController::class, 'logout'])->name('logout');
表单应该返回:
<form method="POST" action="https://example.com/admin/logout" accept-charset="UTF-8" id="logout-form">
但我明白了:
<form method="POST" action="https://example.com/admin/logout" accept-charset="UTF-8" id="logout-form">
我发现了一个类似的问题,一位用户提议添加:
\URL::forceScheme('https');
在AppServiceProvider.php 内但是,我想知道为什么会出现以下行为。这是框架的问题还是我做错了什么?
【问题讨论】:
-
你在代理后面吗?你访问的地址是
https? -
@lagbox 是的,我正在使用代理,我能够修复这个更新 nginx 配置的问题,特别是我添加了这个:
fastcgi_param HTTPS "on";