2016-04-25 78 views
1

可能是一个类似的问题,但到目前为止,我找不到任何答案我的问题。检查是否可以在重定向之前建立安全连接

情况:用户在我的网站http://www.example.com。我正要将他重定向到我的另一个站点:https://secure.example.org

在重定向发生之前,我想检查客户端是否确实能够成功建立安全连接。 (服务器端在重定向期间,或者在重定向之前可能有AJAX请求或任何服务于此目的的请求)。

这样做是否可能?它将如何完成?如何做到这一点的任何偏好?

回答

1

如果浏览器无法安全地连接到https://secure.example.org它不会。

您可以随时发出AJAX请求,但成功或失败并不能说明真正请求的成功。 (因为它是跨域的,你将不得不添加CORS头文件)。

当前的配置是由设计不安全:因为你的第一个页面使用HTTP,攻击者可以通过任何他想要更换你的链接到你的安全页面。

如果您将https添加到您的第一页,那么您无事可做,浏览器将为您执行所有安全检查。

你也应该看看HSTS,以提高安全性。

要重定向到https,如果可能的话,在http网页的开头,包含一个带有https网址的javascript文件,其中包含https网站的重定向:只有当用户支持https时,才会重定向用户。 (你也可以使用HSTS与方法太)

+0

谢谢你的想法,但这不是我的问题的关注。我的问题是关于检查浏览器是否可以建立安全连接。我遇到了早期浏览器版本的问题,因为某些原因无法建立https连接,我希望能够设置一个“后备”这样说。如果没有建立安全连接,我不想向用户显示浏览器生成的错误消息,而是将它们重定向到另一个页面。目前没有发送机密数据(实际上根本没有用户特定的数据)。 – koljanep

+1

@koljanep我已经添加了解释如何尽可能重定向到https。你需要更多的细节吗? – Tom

0

尝试是这样的:

if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off"){ 
    $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 

头( 'HTTP/1.1 301永久移动'); header('Location:'。$ redirect);

}

+0

谢谢,但这不是我的问题的答案。 – koljanep

+0

好吧,我会尝试其他选项 –

相关问题