我想检测用户是否正在查看安全页面,如果没有则重定向(用于登录)。
但是,在我看到服务器变量之前,我的网站会通过代理,并且代理(现在)告诉我,这$_SERVER['HTTPS']
是'on'
URI 明确指示的时候。它还显示'on'
用户何时“安全”导航。
浏览http://
并https://
输出$_SERVER['SERVER_PORT']
= 443
。
我没有能力对代理进行任何更改,所以我想知道:
- PHP 是否有任何其他选项可供我检测真相或...
- 我是否坚持诉诸 JavaScript 的检测和重定向机制。
我从这个问题中挖掘了一些想法,但它们主要围绕着$_SERVER['HTTPS']
值得信赖的变量。呸!
看来这个问题至少正在经历类似的事情,但他/她能够通过调整 apache 解决方案来解决它。
是否有任何其他 PHP SERVER 变量或技巧可用于检测用户的 URI 以什么开头?在查看我的站点 http 与 https 时,$_SERVER 变量之间的唯一区别如下:
- _FCGI_X_PIPE_(随机出现)
- HTTP_COOKIE(sto-id-47873 包含在非安全版本中,但我没有放在那里)
- REMOTE_ADDR(这个和接下来的两个一直在莫名其妙地变化!)
- 远程主机
- REMOTE_PORT('代理人员',你为什么不断地改变这个?)
这些物品中的任何一个是否足够坚固,可以承受一个人的体重而不会碎裂并在以后引起疼痛?也许我不应该相信通过代理过滤的任何东西,因为它可能在任何给定时间发生变化。
这是我为此目的使用 JavaScript 的计划;这是我最好的吗?
function confirmSSL() {
if(location.protocol != "https:") {
var locale = location.href;
locale = locale.replace(/http:\/\//,"https://");
location.replace(locale);
}
}
<body onLoad="confirmSSL()">...
我认为如果用户在我的社区中禁用了 JavaScript,那么他们希望知道自己在做什么。他们应该能够手动进入安全区域。什么样的<noscript>
建议是司空见惯的/好的做法?像这样的东西,也许?:
<noscript>
使用https://blah.more.egg/fake导航以保护您的信息。</noscript>
有效的 PHP 解决方案(有很好的解释)将优先选择正确的答案。随意提交更好的 JavaScript 实现或链接。
非常感谢!