检查未知/远程服务器是否支持HTTPS



是否有可能检查远程服务器是否支持https
当前正在请求https,如果不起作用,请重试http,如果仍然不起作用则显示错误
HTTP中是否嵌入了指示是否支持https的功能?我指的不是重定向等,因为这些必须在服务器上实现,而且并不总是这样。

悄悄地回到HTTP听起来很危险。攻击者(即中间人(可能会通过阻止您对HTTPS的请求来迫使您使用不安全的通道。因此,我一般不建议采取这种做法。

一般来说,您应该让用户决定使用哪种协议。如果它们指定https,则不应静默降级,而应抛出错误。但是,如果他们指定了http,那么也可以先尝试https,如果失败,则静默地返回http(因为他们首先请求http(。

对您的请求的一般回答是:您只能尝试https来检查服务器是否支持https。有一个名为HTTP Strict Transport Security(HSTS(的HTTP扩展,它允许服务器指示所有对它们的请求始终只能通过安全通道执行。如果在HTTPS请求的响应中收到这样的标头,则可以在将来强制主机使用HTTPS。不过请注意,您必须忽略通过不安全的HTTP接收的此类标头。

一般来说,您不能相信通过明文HTTP接收到的任何信息会向您提供有关服务器安全选项(如支持TLS(的任何指示,因为这些信息可能会被中间人攻击者任意欺骗。事实上,防止这种无法检测的更改是首先使用TLS/HTTPS的主要原因之一。

相关内容

最新更新