切换http https加载资源

切换http/https加载资源

1.待我先说这件事情的来龙去脉 公司有个站点是部署了Https的,我加载资源的方式是asset()函数加载的,但是代码上线后,资源加载不到! 我一看,,居然是http方式加载资源,于是我就强制使用Https,线上问题是解决了..但是测试环境并不是https , 这样一来,测试环境又加载不到资源了..基于这个问题. 我想应该要的是一个可以切换http/https加载的方法...

这里采用.ENV文件来控制加载方式

增加.ENV控制字段(不加入版本控制)

IS_HTTPS=true

app.php中设置IS_HTTPS

坚决不建议直接在代码中直接读取.env文件内容

/** 检测是否是https */
'is_https'=>env('IS_HTTPS',false),

增加函数来控制加载资源的方式

asset() 是http方式加载
secure_asset 是https方式加载

function assetByHttpOrHttps($path){
    if(config('app.is_https')){
        return secure_asset($path);
    }
    return asset($path);
}

AppServiceProvider中设置是否强制使用HTTPS

在AppServiceProvider.php的boot方法中增加如下代码

if(config('app.is_https')){
       \URL::forceSchema('https');
}