在CloudFlare后面的Laravel上从HTTP迁移到HTTPS

时间:2016-03-30 09:51:56

标签: php laravel laravel-5.2 cloudflare

我在laravel 5.2上有一个应用程序。 它在HTTP上运行正常。

我使用asset函数生成完整网址而不是使用相对的网址

<link rel="stylesheet" type="text/css" href="{{ asset('/css/bootstrap.min.css') }}">

根据laravel文档hereasset方法会自动检测请求协议并相应地生成URL。

现在应用程序没有在HTTPS上运行, 我可以将secure_asset用于HTTPS网址,但之后它将停止在HTTP和localhost上运行。

我知道我遗失了一些东西,使用laravel

从HTTP迁移到HTTPS变得非常困难

PS - Cloudflare用于提供HTTPS次请求。

3 个答案:

答案 0 :(得分:9)

到目前为止给出的所有答案都是正确的,但没有解决我的问题。

主要问题是我的申请是在CloudFlare

之后

Laravel通过检查HTTP标头(即$_SERVER['REQUEST_SCHEME']检测到一个安全或不安全的请求,即使由于cloudflare,请求仍然是HTTPS,这仍然是HTTP。

CloudFlare为同一个$_SERVER['HTTP_X_FORWARDED_PROTO']设置不同的标头必须检查以检测请求是否安全

关注this文章并对此进行了一些更改后,我成功设法生成了HTTPS URL,而不对之前的应用程序代码进行任何更改。

答案 1 :(得分:1)

访问请求 要通过依赖注入获取当前HTTP请求的实例,您应该在控制器构造函数或方法上键入提示Illuminate\Http\Requesthttps://laravel.com/docs/5.2/requests#request-information

而不是通过配置手动设置它,你可以使用Request :: secure()来检查,如果请求是通过HTTPS完成的

答案 2 :(得分:0)

根据laravel source,如果您没有明确暗示使用http / https,资产将根据请求信息生成协议。所以,你不应该在这里改变任何东西。一旦您开始通过安全连接请求,它将切换到https。