Php 在CloudFlare背后的Laravel上从HTTP移动到HTTPS
我在laravel 5.2上有一个申请。 它在HTTP上运行良好 我使用Php 在CloudFlare背后的Laravel上从HTTP移动到HTTPS,php,laravel,laravel-5.2,cloudflare,Php,Laravel,Laravel 5.2,Cloudflare,我在laravel 5.2上有一个申请。 它在HTTP上运行良好 我使用asset函数来生成完整的url,而不是使用相对的url <link rel="stylesheet" type="text/css" href="{{ asset('/css/bootstrap.min.css') }}"> 根据laravel文档,asset方法自动检测请求协议并相应地生成URL 现在应用程序没有在HTTPS上运行, 我可以对HTTPS URL使用secure\u asset,但之后它将
asset
函数来生成完整的url,而不是使用相对的url
<link rel="stylesheet" type="text/css" href="{{ asset('/css/bootstrap.min.css') }}">
根据laravel文档,asset
方法自动检测请求协议并相应地生成URL
现在应用程序没有在HTTPS上运行,
我可以对HTTPS URL使用secure\u asset
,但之后它将停止在HTTP和localhost
上运行
我知道我遗漏了一些东西,使用laravel
PS-Cloudflare
用于服务HTTPS
请求。访问请求
要通过依赖项注入获取当前HTTP请求的实例,您应该在控制器构造函数或方法上键入hintillighted\HTTP\request
类
您可以使用Request::secure()检查请求是否通过HTTPS完成,而不是通过配置手动设置,如果您没有明确提示asset使用http/HTTPS,asset将根据请求信息生成协议。所以,你不应该在这里改变任何东西。一旦您开始通过安全连接请求它,它将切换到https。到目前为止给出的所有答案都是正确的,但没有一个解决了我的问题 主要问题是我的应用程序落后于
CloudFlare
Laravel通过检查HTTP头(即$\u SERVER['Request\u SCHEME']
)来检测请求是否安全,即使由于cloudflare的原因请求是HTTPS,该头仍然保持HTTP
CloudFlare为相同的服务器设置不同的头,即$\u服务器['HTTP\u X\u FORWARDED\u PROTO']
,必须检查该头才能检测请求是否安全
在本文之后,我成功地生成了HTTPS URL,而没有对以前的应用程序代码进行任何更改。我已经知道我可以这样做,也可以直接使用
$\u服务器['REQUEST\u SCHEME']
检测请求是否安全,但我不知道它将如何帮助资产功能生成正确的URL。据我所知,我没有明确更改它,但您能告诉我从哪里可以验证我相信启用mod_cloudflare(如果您使用apache)本可以解决您的问题,而无需编写任何代码。这本可以解决cloudflare的问题,但此解决方案适用于所有类型的负载平衡器。正如标题中所述,我认为问题集中在cloudflare上。您的url不再有效。。。SdCurChor介绍了一个最近的变化,它引起了我的问题,并在其余的中间有一个HTTP重定向,这些都是HTTPS。这篇文章/链接页面中的这个解决方案成功了。由于该站点已关闭,您可以在Wayback机器上找到它: