代码之家  ›  专栏  ›  技术社区  ›  Kevin Loney

关于URL的可用性是否有任何安全的假设?

  •  4
  • Kevin Loney  · 技术社区  · 17 年前

    我正在尝试确定是否有一种方法可以检查潜在的大量URL列表(>1000000)的可用性,而不必向每个URL发送GET请求。

    假设如果 http://www.example.com http://www.example.com/some/path/to/a/resource/named/whatever.jpg )? 302响应(比如for whatever.jpg)是否足以推翻第一个假设?我认为子域应该被视为是不同的 http://subdomain.example.com http://www.example.com 可能不指向同一ip?

    6 回复  |  直到 17 年前
        1
  •  7
  •   Jason Cohen    17 年前

    不幸的是,不,你不能从中推断出任何东西 4xx 或 5xx 或任何其他代码。

    这些代码用于单个页面,而不是服务器。很可能一个页面向下,另一个页面向上,或者一个有500个服务器端错误,而另一个没有。

    HEAD 而不是 GET . 它检索页面的MIME标头,但不检索页面内容。这节省了服务器端的时间(因为它不必呈现页面)和您自己的时间(因为您不必缓冲然后丢弃内容)。

    我也建议你使用 keep-alive

        2
  •  3
  •   Eric Petroelje    17 年前

    主机(例如www.example.com)的DNS查找失败应足以使该主机的所有URL无效。但子域或其他主机必须单独检查。

    4xx代码可能会告诉您某个特定页面不可用,但您无法从中对其他页面做出任何假设。

    5xx代码真的不会告诉你任何事情。例如,页面可能在那里,但服务器目前太忙了。如果你以后再试一次,它可能会工作得很好。

        3
  •  1
  •   JaredPar    17 年前

    假设子域请求会在父域请求失败时失败是不安全的。也就是说,在您的两个请求之间,您的网络连接可能会上升、下降,或者通常会出现不正常的行为。也可以在请求之间更改域。

    这似乎是一个极端的观点。但这些事件 发生如何处理它们将决定程序的健壮性。

        4
  •  1
  •   JoshBerke    17 年前

        5
  •  0
  •   Boden    17 年前

        6
  •  0
  •   Pesto    17 年前

    除了其他人所说的之外,使用 HEAD 请求而不是获取请求。它们的功能相同,但响应不包含消息体,因此可以为每个人节省一些带宽。

    推荐文章