vee*_*ain 6 javascript php https proxy
我想检测用户是否正在查看安全页面,如果没有则重定向(用于登录).
但是,在我看到服务器变量和代理(现在)告诉我这$_SERVER['HTTPS']是'on'URI明确指示的情况之前,我的网站通过代理.它还显示'on'用户何时"安全"导航.
导航http://并https://输出$_SERVER['SERVER_PORT']= 443.
我没有能力对代理进行任何更改,所以我想知道:
我挖掘这个问题的想法,但他们主要围绕$_SERVER['HTTPS']变量值得信赖.呸!
似乎这个问题至少经历过类似的问题,但是他/她能够通过调整apache解决方案来解决它.
是否有任何其他PHP SERVER变量或技巧可用于检测用户的URI开头的内容?查看我的网站http与https时$ _SERVER变量之间的唯一区别如下:
这些物品中的任何一个都足够坚固,可以在不分裂的情况下施加重量并在以后引起疼痛吗?也许我不应该相信通过代理过滤的任何东西,因为它可能在任何给定时间发生变化.
以下是我为此目的使用JavaScript的计划; 这是我最好的吗?
function confirmSSL() {
if(location.protocol != "https:") {
var locale = location.href;
locale = locale.replace(/http:\/\//,"https://");
location.replace(locale);
}
}
<body onLoad="confirmSSL()">...
Run Code Online (Sandbox Code Playgroud)
我想如果用户在我的社区中禁用了JavaScript,那么他们希望知道他们在做什么.他们应该能够手动进入安全区域.什么样的<noscript>建议是司空见惯/良好做法?也许是这样的事情:
<noscript>使用https://blah.more.egg/fake导航以保护您的信息.</noscript>
有效的PHP解决方案(有很好的解释)将优先考虑正确的答案.随意提交更好的JavaScript实现或链接到一个.
非常感谢!
尽管已经在问题的评论中进行了部分讨论,但我将总结一些有关 JavaScript 中重定向逻辑的建议:
window.locationnot 代替,可以在此处location找到解释。我建议使用以下代码(从这里采用),它简短而高效:
<head>
<script type="text/javascript">
if (window.location.protocol != "https:") {
window.location.href = "https:" + window.location.href.substring(window.location.protocol.length);
}
</script>
...
</head>
<body>
...
<noscript>Please click <a href="https://my-cool-secure-site.com">here</a> to use a secure connection!</noscript>
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |