2015-02-17 230 views
0

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

回答

0

你需要在你对什么样的用户在键入的分类更精确 下面是一些例子和预期反应:

  1. www.google.com:应该翻译成http://www.google.com
  2. ftp://www.foo.com :不应该被修改。同去的file://(本地)
  3. 奥巴马:可能应该运行搜索引擎
  4. 约:设置:应该打开内部页

所以你弄清楚这些规则后,所有的例外情况,你可以使用正则表达式来找出应该做什么。对于HTTP与HTTPS - 如果站点支持HTTPS,如果您转到HTTP链接,您将获得重定向响应(307内部重定向,301永久移动等)。因此,例如,如果您尝试导航至http://www.facebook.com,则会收到307将您重定向至https://www.facebook.com。换句话说,取决于网站告诉浏览器它有HTTPS(除非你自己导航到HTTPS开始)。

0

一个简单而相当准确的方法就是寻找不同模式的存在。如果字符串在遇到任何斜线之前以[SomeText]:开头,则可能意图指示不同的架构,例如about:mailto:file:ftp:

如果您没有看到非http架构,请尝试通过预先计划http://将URL解析为HTTP URL。