2009-07-04 47 views
1

我在某个网站上遇到了问题。它已经提供了许多超链接到其他网站。例如一个这样的网址是:浏览器可以自动更正“损坏的网址”吗?

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

这显然是不正确(http谈到两次)URL所以当一个人点击它有像“地址找不到”页面错误。

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

,才有可能使要访问的URL的基本的完整性浏览器检查像检查:

  • http是只出现一次,
  • 结肠键入正确,
  • 没有发现异常字符在网址开头,
  • 双侧隙是正确的存在等

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

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

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

谢谢。

-AD。

回答

5

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

现在让我们来看看地址栏。如果输入的位置无效,大多数用户友好的浏览器会进行一些错误更正。其中一个纠正措施是在http://前加上字符串(如果不存在)。所以你只需输入example.com来请求http://example.com
另一个更正措施是在输入的字符串之前和之后用http://www..com完成未知主机名。所以你只需要输入example,点击回车,你的请求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://),更正适合用户的位置栏输入。但是,在每个环节都做不到。

+0

@Gumbo:但http://http//example.com/a9noaa.asp仍然不正确的网址,因为它不会把我带到它应该在的页面!所以我不明白当你说它不是一个无效的网址? – goldenmean 2009-07-05 18:36:48

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,则可能会产生一个页面。没有办法做到这一点,因此根本不应该这样做。

1

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

如果不包括http://或网络链接其他协议,则浏览器假设你使用的是相对链接。例如...

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

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

我会建议联系有问题的网站来解决他们的错误。没有浏览器会自动更正。

相关问题