繁体   English   中英

Laravel不使用https作为资产和动态路由

[英]Laravel not using https for assets and dynamic routes

我已经更改了我的APP_URL = https://example.com ,我已将其添加到我的AppServiceProvider的启动方法中:

/** Enable HTTPS */
if(env('REDIRECT_HTTPS')) {
    $url->forceSchema('https');
}

我运行php artisan cache:clearphp artisan view:clearphp artisan config:clear 我仍然无法获得使用https的资产和动态路由。 刚收到错误:

混合内容:“ https://example.com/ ”页面是通过HTTPS加载的,但请求了一个不安全的样式表“ http://example.com/css/app.css ”。 此请求已被阻止; 内容必须通过HTTPS提供。

我知道我可以使用secure_asset而不是asset ,这应该可行,但我需要这是动态的,因为我仍然需要在另一个域上提供网站的http版本。

asset()帮助程序依赖于几种可能性来确定是否建立HTTP或HTTPS URL:

  • $_SERVER['HTTPS']正在on 这是Apache的做事方式。 对于nginx,您可以在配置中自己设置该服务器参数。
  • $_SERVER['HTTP_X_FORWARDED_PROTO']https

如果你是负载平衡器的后面,它可能会发送X-Forwarded-Proto标头,但Laravel默认不信任它,因为在某些情况下它可以由恶意用户设置。 您可以使用TrustedProxy包告诉Laravel信任来自负载均衡器的此标头。 (编辑:现在内置于Laravel

另请参阅: Symfony2:getScheme不返回'https' (Laravel使用Symfony的getScheme()函数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM