我在我的模板中使用以下代码加载我的CSS文件:
<link rel="stylesheet" href="{!! URL::asset('css/app.css') !!}">
如果我在本地计算机上通过https查看页面,那么指向app.css文件的链接也是https,但是在我的实时服务器上,这不会发生。如果您view the live site超过https并查看来源,则可以看到指向CSS文件的链接仍然超过正常的http,因此无法加载。有谁知道为什么会这样?
答案 0 :(得分:4)
当您的用户通过HTTPS访问时,您的CloudFlare配置会使用HTTP将这些请求传递到您的服务器。您有两种选择:
启用CloudFlare的完整或严格SSL。 https://blog.cloudflare.com/origin-server-connection-security-with-universal-ssl/
设置您的网络服务器以查看X-Forwarded-Proto
标头,并告知PHP当标头的值为https
时,通过HTTPS访问它。如何做到这一点取决于您的网络服务器。例如,在nginx中,我为亚马逊的ELB(发送相同的标题)执行此操作:
的
map $http_x_forwarded_proto $is_https {
default off;
https on;
}
然后在我的FastCGI params文件中:
fastcgi_param HTTPS $is_https if_not_empty;
在Apache中,我认为如果安装了mod_setenvif,你可以这样做:
SetEnvIf x-forwarded-proto https HTTPS=on
答案 1 :(得分:2)
您可能需要使用secure_asset
功能。
<link rel="stylesheet" href="{!! secure_asset('css/app.css') !!}">