Javascript 需要站点的即时帮助以https形式加载http站点:
最近,我的网站“just http:”目前还不安全,但当它被错误链接为https:(事实并非如此)时,会出现多个问题。不幸的是,无论我想要什么,只要网站链接到谷歌、facebook或任何地方,这种情况都会发生。过去,我通过在页面顶部添加JavaScript成功地解决了这个问题Javascript 需要站点的即时帮助以https形式加载http站点:,javascript,.htaccess,http,https,webserver,Javascript,.htaccess,Http,Https,Webserver,最近,我的网站“just http:”目前还不安全,但当它被错误链接为https:(事实并非如此)时,会出现多个问题。不幸的是,无论我想要什么,只要网站链接到谷歌、facebook或任何地方,这种情况都会发生。过去,我通过在页面顶部添加JavaScript成功地解决了这个问题 <script> // redirect if wrongly linked via https. if(window.location.href.indexOf("https") >
<script>
// redirect if wrongly linked via https.
if(window.location.href.indexOf("https") >= 0) {
var loc = window.location.href;
var newloc = loc.replace("https:","http:");
window.location = newloc;
}
</script>
显然,“exampledomain”是我的领域。我不知道它是否做了什么意想不到的事情,但它肯定没有帮助
那我该怎么办?我意识到长期的解决方案是成为https。这个建议现在没用。这是一个超过100页的传统网站。现在的情况是,一旦有人使用错误的https:link访问,他们将永远看不到任何内容。现在有什么我能做的吗
编辑…
有可能是服务器强迫我这么做的吗?我找到了这篇文章,并询问了我的主机支持是否可以做些什么。如果不是的话,托管公司可能会卖给我网络空间,然后如果我不升级,人们就无法访问。是否有任何测试,我可以做,看看这项政策是否正在执行我的托管公司
编辑:我终于让我的网站重新上线了。我不是在“回答”我自己的问题,因为我强烈怀疑即使现在我的答案也不完整。但我们做了两件事:
Header always unset Strict-Transport-Security
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
我想我还没有看到这个问题的最后一面,是的。。。最终我将跳转到HTTPS。我只是不喜欢在强制压力下这样做,因为内部服务器策略已更改。要将网站从HTTPS重定向到HTTP,请在网站的.htaccess文件中添加以下规则:
# Redirect HTTPS to HTTP
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
要将网站从HTTPS重定向到HTTP,请在网站的.htaccess文件中添加以下规则:
# Redirect HTTPS to HTTP
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
不。。。我没有SSL证书
您需要SSL证书。如果未安装覆盖请求主机名的SSL证书,则:
- 服务器无法连接,因为它没有侦听端口443。(尽管情况似乎并非如此。)
- 服务器上安装了SSL证书,服务器在端口443上响应,但证书用于不同的域/主机名,因此浏览器在尝试连接时发出警告。用户“不应该”接受此证书,在这种情况下,他们永远不会到达您的站点
- 您之前已经实现了HTTP到HTTPS 301重定向,并且看到了缓存响应/重定向
- 您以前实现过。在这种情况下,浏览器(最初访问HTTPS后)将始终请求HTTPS。这是不可逆的,直到用户访问您的“HTTPS”站点后
时间到期。但是HSTS是一个深思熟虑的行为——这真的不应该是“偶然”实现的。(如果SLL证书不完全有效,浏览器会尊重HSTS标题,我也会感到惊讶?!) 通过HTTPS访问站点时,请查找最长期限
HTTP响应头。这表明HST已在您的站点上“实施”严格的传输安全性
更新:
Header always unset Strict-Transport-Security
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
取消设置STS头,那么它表明“其他东西”已经在设置它了!?默认情况下不会设置此标题,因此最好首先找出设置它的位置/内容。(web主机本身不应设置这样的标头。)
旁白:通过更改(.*)
(重写规则
模式)只需^
,即可实现轻微优化。因为您不需要匹配或捕获URL路径,所以它只需要在替换字符串中成功(因为您正在使用REQUEST\u URI
)
但为什么我的浏览器“坚持”使用HTTPS呢。。。但奇怪的是,IE和Edge确实起了作用,这让我意识到了两者的区别。。。我不
经常使用这些浏览器(检查兼容性除外),因此
区别在于:尽管有清除缓存和
cookies,显然这些选项都没有真正刷新历史。
如果HTTPS出现在最近的历史中,那么浏览器似乎
自动恢复到那个。。。。历史一旦真正澄清,,
不再有问题了