我一直在四处寻找并且找不到可靠的答案。
我试图检索包含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方式实现这一点而不是头文件中的逻辑
答案 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://还是不是?”是合理的。代码中的逻辑。你的代码不应该担心它是如何被服务的 - 这完全是一个不同的层。
您的开发环境是否安全并不奇怪,但您的生产并非如此?通常的做法是反过来 - 你关心生产的安全性,而不是你的登台服务器。
使用url()帮助器,这样您就不需要考虑URL(如果重命名站点会怎样?http / https不是唯一的问题)
在http://网站上包含https://链接是完全安全的 - 您的浏览器根本不会抱怨。当安全页面上包含不安全的链接时,浏览器会抱怨。因此,请随时使用https://包含https://页面上托管的资源。例如。指向Google字体,Facebook SDK或其他任何内容的链接 - 只需使用https://无论安全性如何。