何时将 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
您需要更精确地对用户输入的内容进行分类。
以下是一些示例和预期反应:
- www.google.com:应该翻译成http://www.google.com
- ftp://www.foo.com:不应修改。同样转到文件://(本地)
- Barrack Obama:可能 运行 一个搜索引擎
- 关于:设置:应该打开一个内部页面
因此,在您找出这些规则及其所有例外情况后,您可以使用正则表达式找出应该做什么。
至于 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)。
我正在尝试使用 Cocoa 和 Swift 创建网络浏览器。我有一个 NSTextField
,用户可以在其中输入他想打开的网站,还有一个 WebView
,在其中显示请求的页面。到目前为止,为了改善用户体验,我正在检查用户输入的网站是否以 http://
开头,如果不是则添加它。好吧,它适用于大多数情况,但并非每次都适用,例如当用户想要打开本地网页或类似 about:blank
的内容时。我如何检查是否需要添加 http://
以及我是否应该添加 https://
而不是 http://
?
一种简单且相当准确的方法就是查找是否存在不同的模式。如果字符串在遇到任何斜杠之前以 [SomeText]:
开头,则可能是为了指示不同的架构,例如 about:
、mailto:
、file:
或 ftp:
.
如果您没有看到非 http 架构,请尝试通过在 http://
.
您需要更精确地对用户输入的内容进行分类。 以下是一些示例和预期反应:
- www.google.com:应该翻译成http://www.google.com
- ftp://www.foo.com:不应修改。同样转到文件://(本地)
- Barrack Obama:可能 运行 一个搜索引擎
- 关于:设置:应该打开一个内部页面
因此,在您找出这些规则及其所有例外情况后,您可以使用正则表达式找出应该做什么。
至于 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)。