我在特定网站上遇到了一段问题。它已经在其他网站上提供了许多超链接。例如一个这样的URL是:
http://http//example.com/a9noaa.asp
显然不正确(http
来了两次)网址,因此当点击它时会出现“未找到地址”等页面错误。
但是当复制链接位置并将其粘贴到浏览器的位置栏时,它会正确加载该新页面。所以这是超链接中提到的URL不正确的问题。
是否可以让浏览器检查所访问的URL的基本完整性,例如检查:
http
只出现一次,或者在地址栏中输入了URL并自动更正其中的错误?
是否可以使用任何客户端代码来使互联网浏览器实现此功能?有可能吗?
或者是否已有可用于实现此目的的流行浏览器(Firefox,IE)的插件?
谢谢。
-AD。
答案 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
”来访问它。我认为这种最好的猜测是空的,任何进一步的自动修正都会做得太多。
apple/safari
”产生DNS错误,它会自动尝试将地址填写为“apple.com/safari
”。使用您的网址时,可能会尝试将其填写为“http://http.com//example.com/a9noaa.asp
”,如果http.com
存在,则可能会生成一个网页。没有一种方法可以做到这一点,因此根本不应该这样做。