浏览器可以自动更正“损坏的网址”吗?

时间:2009-07-04 12:16:31

标签: url browser error-handling sanity-check

我在特定网站上遇到了一段问题。它已经在其他网站上提供了许多超链接。例如一个这样的URL是:

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

显然不正确(http来了两次)网址,因此当点击它时会出现“未找到地址”等页面错误。

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

是否可以让浏览器检查所访问的URL的基本完整性,例如检查:

  • http只出现一次,
  • 冒号输入正确,
  • 网址开头没有异常字符,
  • 正确存在双反斜杠等

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

是否可以使用任何客户端代码来使互联网浏览器实现此功能?有可能吗?

或者是否已有可用于实现此目的的流行浏览器(Firefox,IE)的插件?

谢谢。

-AD。

3 个答案:

答案 0 :(得分:5)

首先,http://http//example.com/a9noaa.asp 是一个有效的URI,http作为方案,第二个http作为主机名,//example.com/a9noaa.asp作为道路。因此,如果它无效,浏览器无需更正它。

现在让我们看看位置栏。如果输入的位置无效,大多数用户友好的浏览器会进行一些错误纠正。其中一个纠正措施是在http://之前添加字符串,如果不存在的话。因此,您只需输入example.com即可请求http://example.com 另一个更正措施是在输入的字符串之前和之后使用http://www..com填写未知主机名。因此,您只需键入example,按Enter键即可http://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://)。但是,在每个链接上执行此操作都不是。

答案 1 :(得分:1)

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

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

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

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

我建议您与相关网站联系以解决错误。没有浏览器会自动纠正这个问题。

答案 2 :(得分:0)

确实不应该由浏览器来纠正错误形成的URL。 URL应该是某个页面的唯一标识符。执行链接到页面的人应该注意链接到正确的页面。打开网址时一定不需要猜测。

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

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