我在本地一laravel环境

搭好运行时,发生了奇怪的现象,所有引用文件居然带有https,但我实际上是没有这样的配置的,准备通过 百度查询看能解决这个问题

百度查到的都是千篇一律,答非所问,只找到一个,而且和我的问题对不上

下面是他的问题以及解决办法,但不是我的问题以及解决办法

 我正在开发 Laravel 5.5 版。我有一个需要执行域的应用程序。这就是为什么,我在我的 /etc/hosts 中添加了以下条目。文件,以便我可以使用 等域打开我的应用程序仪表板.application.dev 或 api.application.dev .这是我的/etc/hosts文件看起来像。

127.0.0.1   localhost
127.0.1.1   p01ymath
127.0.0.1   dashboard.application.dev
127.0.0.1   api.application.dev

php - 为什么 laravel 即使在本地环境中也会重定向到 https? - IT工具网

我的问题与他的类似

我通过检查自已的代码发现,只要使用了asset这个函数,就会发生地址变化,而在官方说明中,说的是asset有两个参数,第一个是文件路径,第二个是否需要转换为https,默认是不启用第二个参数的

asset("路径",boolean)

我本地的测试代码 

 <link rel="stylesheet" href="{{asset('/static/css/bootstrap.css')}}" crossorigin="anonymous">

输出结果为

<link rel="stylesheet" href="https://localdomain.test/static/css/bootstrap.css" crossorigin="anonymous">

所有使用到asset的都这样,从我的项目上面看,明显是asset出问题了

于是查找asset函数,

在项目文件中找到这个方法

\vendor\laravel\framework\src\Illuminate\Foundation\helpers.php

 其定义如下

if (! function_exists('asset')) {
    /**
     * Generate an asset path for the application.
     *
     * @param  string  $path
     * @param  bool|null  $secure
     * @return string
     */
    function asset($path, $secure = null)
    {
      
        return app('url')->asset($path, $secure);
    }
}

从上面代码看,感觉代码出了问题,这儿将null转成asset的第二个值出了问题,第二个值为boolean,为是兼容其他程序,加了一个环境变量,IS_HTTPS=false

修改上面程序

if (! function_exists('asset')) {
    /**
     * Generate an asset path for the application.
     *
     * @param  string  $path
     * @param  bool|null  $secure
     * @return string
     */
    function asset($path, $secure = null)
    {
        $secure=is_null($secure)?env('IS_HTTPS'):$secure;
        return app('url')->asset($path, $secure);
    }
}

经过测试,问题解决

对于上面这个问题,各位是否遇到过,各位是如何解决的呢?

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐