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

Rya*_*ski 6 php https http laravel

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

/** Enable HTTPS */
if(env('REDIRECT_HTTPS')) {
    $url->forceSchema('https');
}
Run Code Online (Sandbox Code Playgroud)

我跑了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版本.

cee*_*yoz 5

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()函数)

  • 谢谢!使用这个 https://laravel.com/docs/5.5/requests#configuring-trusted-proxies (2认同)