如何检查Web服务器是否具有SSL

时间:2017-10-23 08:44:55

标签: ios swift ssl wkwebview

我正在使用WKWebView开发一个小型Web浏览器应用程序。在那里,当用户输入url时,我想检查相关的Web服务器是否具有SSL,然后重定向到https:// one。

例如,用户输入http://facebook.com。 由于facebook有SSL,我想将用户重定向到https://facebook.com

任何帮助都将受到高度赞赏。

编辑:我的错。它由网站本身完成。我误解了一些东西。

1 个答案:

答案 0 :(得分:2)

由于您没有向我们提供更多详细信息或限制,只有您通过以下选项了解最适合您需求的内容。

客户端天真的方法

  • 从URL中删除协议HTTP并将其替换为HTTPS
  • 使用新形成的网址
  • 进行HEAD通话
  • 收到肯定响应代码(2XX)后,您可以推断出HTTPS可用并自行重定向

此解决方案的代价是首次调用" guess" HTTPS的可用性。在积极的结果,您需要再次打电话来获取文件。

预测方法

预测网站有HTTPS并立即请求。如果页面没有返回,请再次尝试使用HTTP。当然,在确定两个请求的结果之前,请确保您不向用户显示任何内容。不要将此解决方案与前一个解决方案混淆。该解决方案试图加载"网站立即与前一个网站一起验证"第一

全部获取

由于您是从头开发浏览器,因此请考虑获取这两个页面的可能性。以并发方式获取具有HTTP和HTTPS的两个URL。收到HTTPS的肯定响应后,即表现出来。否则,您只显示HTTP响应(好的或坏的)。

现代浏览器策略

让服务器始终使用提供的URL来决定。这样做,如果不允许HTTP,服务器"应该"通过回复重定向状态代码(3xx)提醒您,并在响应标头中为您提供新目的地。此方法简化了客户端逻辑,但希望服务器发送重定向详细信息。请注意,并非所有网站都处理此案例。

请求http://www.gmail.com

的示例
Request URL:http://www.gmail.com/
Request Method:GET

响应标头

Status Code:307 Internal Redirect
Referrer Policy:no-referrer-when-downgrade
Location:https://www.gmail.com/
Non-Authoritative-Reason:HSTS