在我的产品中(aws)laravel返回http,即使它确实是https
。
\Request::url(); // this returns http://...
\Request::isSecure()?'yes':'no'; // this returns 'no'
,如果我将shema强制为http或https,则不会更改。 当我强制这样的模式时:
\Illuminate\Support\Facades\URL::forceScheme('https');
唯一要更改的是这个
url()->current(); // this returns https://...
我无法在本地/ dev宅基地上重现问题,它在宅基地上可以正常工作。
(laravel 5.7)
答案 0 :(得分:0)
对于要强制使用https的任何路由,应将它们包装在可强制建立安全连接的中间件中。此处显示了仅对生产进行重定向的一般示例:
<?php
namespace App\Http\Middleware;
use Closure;
class HttpsProtocol {
public function handle($request, Closure $next)
{
if (!$request->secure() && env('APP_ENV') === 'production') {
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
}
要将其应用于您的路由,无论您在分配中间件的位置如何,都可以将其注册-在route / web.php文件或App \ Http \ Kernel中作为一个组。