何时将 http(s):// 添加到网站地址

When to add http(s):// to website address

我正在尝试使用 Cocoa 和 Swift 创建网络浏览器。我有一个 NSTextField,用户可以在其中输入他想打开的网站,还有一个 WebView,在其中显示请求的页面。到目前为止,为了改善用户体验,我正在检查用户输入的网站是否以 http:// 开头,如果不是则添加它。好吧,它适用于大多数情况,但并非每次都适用,例如当用户想要打开本地网页或类似 about:blank 的内容时。我如何检查是否需要添加 http:// 以及我是否应该添加 https:// 而不是 http://

一种简单且相当准确的方法就是查找是否存在不同的模式。如果字符串在遇到任何斜杠之前以 [SomeText]: 开头,则可能是为了指示不同的架构,例如 about:mailto:file:ftp: .

如果您没有看到非 http 架构,请尝试通过在 http://.

前面将 URL 解析为 HTTP URL

您需要更精确地对用户输入的内容进行分类。 以下是一些示例和预期反应:

  1. www.google.com:应该翻译成http://www.google.com
  2. ftp://www.foo.com:不应修改。同样转到文件://(本地)
  3. Barrack Obama:可能 运行 一个搜索引擎
  4. 关于:设置:应该打开一个内部页面

因此,在您找出这些规则及其所有例外情况后,您可以使用正则表达式找出应该做什么。

至于 HTTP 与 HTTPS - 如果网站支持 HTTPS,当您转到 HTTP link 时,您将收到重定向响应(307 内部重定向、301 永久移动等)。因此,例如,如果您尝试导航到 http://www.facebook.com, you'll receive a 307 that will redirect you to https://www.facebook.com。换句话说,由网站告诉浏览器它有 HTTPS(当然除非您首先导航到 HTTPS)。