1

我曾经在某个特定网站上遇到过问题。它提供了许多指向其他站点的超链接。例如,一个这样的 URL 是:

http://http//example.com/a9noaa.asp

这显然是不正确的(http出现两次)URL,因此当单击它时会出现诸如“找不到地址”之类的页面错误。

但是,当复制链接位置并将其粘贴到浏览器的地址栏中时,它会正确加载该新页面。所以这是超链接中提到的URL不正确的问题。

是否可以让浏览器检查正在访问的 URL 的基本健全性,例如检查:

  • 单词http只出现一次,
  • 冒号输入正确,
  • URL 开头没有异常字符,
  • 双反冲正确存在,等等。

或者是在地址栏中输入的 URL 并自动更正其中的错误?

是否可以存在任何客户端代码以使 Internet 浏览器实现此功能?可能吗?

或者是否有任何流行浏览器(Firefox、IE)的插件可以实现这一点?

谢谢你。

-广告。

4

3 回答 3

5

首先,http://http//example.com/a9noaa.asp 一个有效的 URI,http作为方案,第二个http作为主机名和//example.com/a9noaa.asp路径。所以如果它不是无效的,浏览器就不需要更正它。

现在让我们看看位置栏。如果输入的位置无效,大多数用户友好的浏览器都会进行一些错误更正。http://如果该字符串不存在,则其中一项更正措施是在字符串前面加上。所以你只需要输入example.com请求http://example.com。另一个更正措施是在输入字符串之前和之后完成
未知主机名。所以你只需要输入,按回车然后请求。http://www..comexamplehttp://www.example.com

但是位置栏之外的任何错误纠正都可能是至关重要的,尤其是在超链接中。举个例子:客人在留言簿条目中输入他/她的网站 URI,但省略了http://. 现在该值已在超链接中使用,但缺少http://的没有前缀。所以链接可能如下所示:

<a href="example.com">Website</a>

如果您单击此类链接,则该链接的相对 URI 将被解析为使用当前文档的 URI 作为基础的绝对 URI。因此链接可能会扩展为http://some.example/guestbook/example.com. 谁没有经历过?

但是纠正http://浏览器中的缺失是致命的。因为作者可能打算引用 http://some.example/guestbook/example.com而不是http://example.com浏览器期望的引用。

所以要四舍五入:在缺少某些东西(例如http://)时更正用户的位置栏输入。但不是在每个链接上都这样做。

于 2009-07-04T12:49:35.287 回答
1

您发布的 URL 不是“不正确的”,它是有效的。主机名可以采用多种形式,例如http://localhost/http://http/以及更常见的http://example.com

如果您在 Web 链接中不包含http://其他协议,则浏览器会假定您使用的是相对链接。例如...

<a href="www.example.com">link</a>

...将链接到http://yoursite.com/www.example.com,因为这是一个完全有效的 URL - 您可以命名一个文件www.example.com

我建议联系相关网站以修复他们的错误。没有浏览器会自动更正此问题。

于 2009-07-06T16:10:01.640 回答
0

真的不应该由浏览器来纠正格式错误的 URL。URL 应该是某个页面的唯一标识符。链接到页面的人应该注意链接到正确的页面。打开 URL 时不能有任何猜测。

也就是说,某些浏览器比其他浏览器更好。在我的脑海中,我认为 IE 不会理解“ localhost:8888/test”(没有给出协议,也没有标准端口 80),但 Firefox 至少会尝试通过“ http://localhost:8888/test”访问它。我认为这种最佳猜测填补空白很好,任何进一步的自动更正都会做得太多。

例如,Safari 会尝试为您自动猜测域名。如果 " apple/safari" 产生 DNS 错误,它会自动尝试将地址补全到 " apple.com/safari"。使用您的 URL,它可能会尝试将其完成为“ ”,如果存在http://http.com//example.com/a9noaa.asp,它可能会生成一个页面。http.com没有一种方法可以做到这一点,因此根本不应该这样做。

于 2009-07-04T12:50:41.790 回答