我在laravel 5.2上有一个应用程序。 它在HTTP上运行正常。
我使用asset
函数生成完整网址而不是使用相对的网址
<link rel="stylesheet" type="text/css" href="{{ asset('/css/bootstrap.min.css') }}">
根据laravel文档here,asset
方法会自动检测请求协议并相应地生成URL。
现在应用程序没有在HTTPS上运行,
我可以将secure_asset
用于HTTPS网址,但之后它将停止在HTTP和localhost
上运行。
我知道我遗失了一些东西,使用laravel
PS - Cloudflare
用于提供HTTPS
次请求。
答案 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\Request
类
https://laravel.com/docs/5.2/requests#request-information
而不是通过配置手动设置它,你可以使用Request :: secure()来检查,如果请求是通过HTTPS完成的
答案 2 :(得分:0)
根据laravel source,如果您没有明确暗示使用http / https,资产将根据请求信息生成协议。所以,你不应该在这里改变任何东西。一旦您开始通过安全连接请求,它将切换到https。