首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >laravel asset()方法不返回https

laravel asset()方法不返回https
EN

Stack Overflow用户
提问于 2016-11-21 14:18:45
回答 7查看 6.6K关注 0票数 8

我正在使用asset()的公共方法生成正确的url在laravel。

医生里写着:

因此,在理论上,它应该检测出正确的方案本身。

但是在我看到的代码中:https://github.com/illuminate/routing/blob/master/UrlGenerator.php#L210

代码语言:javascript
运行
复制
public function asset($path, $secure = null)
    {

“安全”的默认值为空。因此,这个方法对http/https都没有好处。

我在这里错过了什么?

我用的是反向代理,是因为这个吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-11-21 14:26:58

从GitHub中可以看到,asset方法正在调用getScheme来确定方案应该是什么。

https://github.com/illuminate/routing/blob/master/UrlGenerator.php#L303

代码语言:javascript
运行
复制
public function formatScheme($secure = null)
{
    if (! is_null($secure)) {
        return $secure ? 'https://' : 'http://';
    }
    if (is_null($this->cachedScheme)) {
        $this->cachedScheme = $this->forceScheme ?: $this->request->getScheme().'://';
    }
    return $this->cachedScheme;
}

因此,如果您不提供asset第二个参数$secure,那么它将使用请求方案。否则,您可以提供$secure来强制执行所需的方案,而不管请求中的方案是什么。

如果您查看代码,您将看到,如果$secure为null且没有设置缓存,则缓存将设置为请求方案(即$this->request->getScheme()),并因此返回。

票数 3
EN

Stack Overflow用户

发布于 2021-11-14 07:10:42

请停止为已经存在的事情编写代码。有一个ASSET_URL env变量。使用它。

代码语言:javascript
运行
复制
ASSET_URL=https://your.app.url #in env for production

ASSET_URL=http://your.app.url #in env for local development

( https://stackoverflow.com/a/68287406/7481663 )

票数 4
EN

Stack Overflow用户

发布于 2016-11-21 14:26:29

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40722331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档