URL:遵循带有斜杠的相对路径的规则

时间:2013-03-15 18:03:02

标签: html url web-crawler

我在服务器端找到了很多关于相对路径跟踪斜杠问题的答案,但在客户端没有。帮助我。

我正在编写一个网络抓取工具来统计一组网站,并遇到了问题。我正在使用的一个网站有一个导航栏,其中相对路径带有尾部斜杠,并且打算将这些路径视为绝对路径,如下所示:

http://www.example.com/foo/bar页上的

导航栏链接地址 - > foo/baz/quox/

预期绝对网址 - > http://www.example.com/foo/http://www.example.com/baz/http://www.example.com/quox/

问题是,据我所知,这是非标准行为 - 但Firefox和Chrome都将这些路径视为绝对路径。根据{{​​3}}和RFC 1808,这些应该像相对路径一样处理,如下所示:

spec-correct absolute urls - > http://www.example.com/foo/foo/http://www.example.com/foo/baz/http://www.example.com/foo/quox/

特别是在RFC 1808中的第5.1节和RFC 2396中的C.1中,第4个示例将此案例特别视为相对路径。在我编写抓取工具的Ruby中,RFC 2396根据规范处理这些。

更糟糕的是,有问题的服务器很乐意为这些路径返回200 OK,并且所有这些路径都有这个导航栏:所以我最终抓取http://www.example.com/foo/这是与{{{1}相同的页面1}},http://www.example.com/foo/foo/等,组合使用奇怪的网址,例如http://www.example.com/foo/foo/foo/

所以这就是问题所在:我是否遗漏了一些允许Chrome和Firefox将这些网址解释为绝对路径的内容?有没有办法消除规范正确且绝对路径是预期路径的情况?

1 个答案:

答案 0 :(得分:1)

<base>元素中必定已定义<head>标记,用于指定页面中相对路径的基本URL。

RFC-1808