Laravel在生产中返回http而不是https

时间:2018-10-19 02:43:31

标签: laravel amazon-web-services amazon-ec2

在我的产品中(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)

1 个答案:

答案 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中作为一个组。