我怎么能得到包括http或https laravel的完整网址

时间:2016-01-10 03:24:46

标签: php laravel

我一直在四处寻找并且找不到可靠的答案。

我试图检索包含https或http的完整网址。原因是因为我的开发环境是一个安全的环境(c9.ide)所以所有样式表都指向一个https cdn。

但是当我部署到不是https的生产时,所有我的样式表都会中断,因为http正在尝试加载https,但它不是一个安全的站点,所以我收到错误消息。

我的目标是在代码

中实现这一目标
if(site_is_https) {
//load all of these files with proper url that points to https
} else {
//load all of these files with proper url that points to http
}

除非别人知道更好的解决方案,否则这是我能解决这个问题的唯一方法。我将如何以mvc方式实现这一点而不是头文件中的逻辑

4 个答案:

答案 0 :(得分:2)

除了@ JosephSilber的回答,另一种选择是使用“协议相对网址”。

而不是
http://example.com/my.css
https://example.com/my.css

你只需要使用
//example.com/my.css

通过不使用特定协议(保留双斜杠),将在当前使用的任何协议上提供资源。如果您使用的是https,则会通过https投放。如果您使用的是http,则会通过http。

提供

答案 1 :(得分:1)

回答这个问题:

if (Request::isSecure()) {
    // ...
}

但你不应该需要这个。如果您使用url帮助程序,它将自动使用正确的方案。

答案 2 :(得分:0)

在php中你可以使用:

if ($_SERVER['HTTPS']=='on') {//dothis}

答案 3 :(得分:0)

我不认为包含任何“它是https://还是不是?”是合理的。代码中的逻辑。你的代码不应该担心它是如何被服务的 - 这完全是一个不同的层。

  1. 您的开发环境是否安全并不奇怪,但您的生产并非如此?通常的做法是反过来 - 你关心生产的安全性,而不是你的登台服务器。

  2. 使用url()帮助器,这样您就不需要考虑URL(如果重命名站点会怎样?http / https不是唯一的问题)

  3. 在http://网站上包含https://链接是完全安全的 - 您的浏览器根本不会抱怨。当安全页面上包含不安全的链接时,浏览器会抱怨。因此,请随时使用https://包含https://页面上托管的资源。例如。指向Google字体,Facebook SDK或其他任何内容的链接 - 只需使用https://无论安全性如何。