2013-03-15 143 views
3

我在服务器端找到了很多关于相对路径跟踪 - 斜杠问题的答案,但在客户端没有找到答案。在这里帮助我。URL:遵循相对路径和尾部斜杠的规则

我正在编写一个网络爬取器来统计一组网站,并且遇到问题。一个网站我工作有尾随斜线相对路径导航栏一个,并打算这些路径被视为绝对的,就像这样:

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

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

意绝对URL - >http://www.example.com/foo/http://www.example.com/baz/http://www.example.com/quox/

的问题是,据我所知,这是不规范的行为 - 然而,Firefox和Chrome都汉将这些路径视为绝对的。在第5.1节中RFC 1808和C.1>http://www.example.com/foo/foo/http://www.example.com/foo/baz/http://www.example.com/foo/quox/

特别 -

SPEC-正确绝对URL:根据RFC 1808,并RFC 2396,这些应象相对路径处理,这样在RFC 2396中,第四个例子显示了这种情况被明确视为相对路径。在Ruby中,我正在编写爬网程序,Addressable gem根据规范处理它们。

更糟糕的是有问题的服务器很高兴返回200 OK了这些路径,和所有的人都有这样的导航栏:所以我最终爬行http://www.example.com/foo/这是同一页http://www.example.com/foo/foo/http://www.example.com/foo/foo/foo/等,组合方法来奇怪的URL像http://www.example.com/foo/baz/quox/foo/

所以这里的问题:我错过的东西,允许Chrome和Firefox都将这些网址解释为绝对路径?有什么方法可以消除规范正确,绝对路径是预期的情况?

回答

1

<head>元素内部必须有一个<base>标签,用于指定页面中相对路径的基本URL。

RFC-1808