【问题标题】:URL: following rules for relative path with trailing slashURL:遵循带有斜杠的相对路径的规则
【发布时间】:2013-03-04 13:42:17
【问题描述】:

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

我正在编写一个网络爬虫来获取一组网站的统计信息,但遇到了问题。我正在使用的一个网站有一个带有斜杠的相对路径的导航栏,并打算将这些路径视为绝对路径,如下所示:

在页面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 都将这些路径视为绝对路径。根据RFC 1808RFC 2396,这些应该像相对路径一样处理,像这样:

规范正确的绝对网址 -> 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 中,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 都将这些 url 解释为绝对路径的东西?有什么方法可以消除规范正确且绝对路径是预期的情况?

【问题讨论】:

    标签: html url web-crawler


    【解决方案1】:

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

    RFC-1808

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      相关资源
      最近更新 更多