Laravel asset URL ignoring https

2019-02-19 02:51发布

I am using the following code in my template to load in my CSS file:

<link rel="stylesheet" href="{!! URL::asset('css/app.css') !!}">

If I view the page over https on my local machine then the link to the app.css file is also https, however on my live server this isn't happening. If you view the live site over https and view the source you can see that the link to the CSS file is still over normal http and so doesn't load. Does anyone know why this is happening?

2条回答
何必那么认真
2楼-- · 2019-02-19 02:59

You may need to use secure_asset function instead.

<link rel="stylesheet" href="{!! secure_asset('css/app.css') !!}">
查看更多
我只想做你的唯一
3楼-- · 2019-02-19 03:07

While your users are accessing via HTTPS, your CloudFlare configuration is passing those requests onto your server using HTTP. You have two options:

  1. Turn on CloudFlare's Full or Strict SSL. https://blog.cloudflare.com/origin-server-connection-security-with-universal-ssl/

  2. Set up your webserver to see the X-Forwarded-Proto header and tell PHP it's being accessed via HTTPS when that header's value is https. How to do this depends a bit on your webserver. In nginx, for example, I do this for Amazon's ELB (which sends the same headers):

map $http_x_forwarded_proto $is_https {
    default off;
    https on;
}

and then this in my FastCGI params file:

fastcgi_param  HTTPS              $is_https if_not_empty;

In Apache, I think you can do this if mod_setenvif is installed:

SetEnvIf x-forwarded-proto https HTTPS=on
查看更多
登录 后发表回答