我已经更改了我的APP_URL = https://example.com,我已将其添加到我的AppServiceProvider的启动方法中:
/** Enable HTTPS */
if(env('REDIRECT_HTTPS')) {
$url->forceSchema('https');
}
我已经php artisan cache:clear
,php artisan view:clear
和php artisan config:clear
了。我仍然无法获得使用https的资产和动态路由。刚收到错误:
混合内容:“https://example.com/”页面是通过HTTPS加载的,但是请求了一个不安全的样式表“http://example.com/css/app.css”。此请求已被阻止;内容必须通过HTTPS提供。
我知道我可以使用secure_asset
而不是asset
这应该可行,但我需要这是动态的,因为我仍然需要在另一个域上提供网站的http版本
答案 0 :(得分:4)
asset()
帮助程序依赖于几种可能性来确定是否建立HTTP或HTTPS URL:
$_SERVER['HTTPS']
为on
。这是Apache的做事方式。对于nginx,您可以在配置中自己设置该服务器参数。$_SERVER['HTTP_X_FORWARDED_PROTO']
为https
。如果您在负载均衡器后面,它可能会发送X-Forwarded-Proto
标头,但Laravel默认不信任它,因为它可以由恶意用户设置一些案例。您可以使用the TrustedProxy package告诉Laravel信任来自负载均衡器的此标头。 (编辑:现在是built into Laravel)
另请参阅:Symfony2: getScheme does not return 'https'(Laravel使用Symfony' getScheme()
函数来实现此目的)