【问题标题】:How can I check if two different URL's point to the same resource?如何检查两个不同的 URL 是否指向同一个资源?
【发布时间】:2011-03-09 18:55:00
【问题描述】:

假设我在名为“linux”的计算机上托管了一个网站,它是两个不同网络的一部分,地址分别为 192.168.1.1 和 10.1.1.1。在“linux”上本地工作时,我可以通过以下 URL 访问该网站:

http://192.168.1.1/ http://10.1.1.1/ http://linux/ http://localhost/ http://127.0.0.1/

在网络“10.1.1.0/24”上的另一台机器上工作我可以使用以下内容:

http://10.1.1.1/ http://linux/

但在“192.168.1.0/24”上我只能使用:

http://192.168.1.1/ http://linux/

我正在开发一个比较 URL 的应用程序,在该应用程序的上下文中,如果两个 URL 指向相同的资源,则它们是相等的。

有没有一种使用 C# 中的 URI 类进行这种比较的快速方法?

【问题讨论】:

    标签: c# .net wcf url uri


    【解决方案1】:

    URI 类无法帮助您;它只能确定两个 URI 是否是相同的 URI,并且只有当它们具有相同的服务器名称/IP 地址时它们才是相同的 URI。

    最好的选择是从两个 URL 下载资源,并通过检查是否相等并假设两个资源是相同的资源(如果它们是相同的位序列)来查看它是否是相同的资源。

    这对我来说不是一个选择,性能成本可能太高了。我希望能够匹配 URI 的“主机地址”部分的东西,那么剩下要比较的就是相对路径和端口...... – Thiado de Arruda

    不幸的是,框架中没有任何东西可以开箱即用,因为没有可靠的方法可以将不同的主机名映射到同一个主机,从而映射到同一个资源。

    您将不得不将某种主机映射到这些主机的各种别名,并自己查询它们。 URI.Host 属性将为您获取相关 URI 的主机名,但您必须自己翻译它。框架中的任何内容都无法为您完成。

    【讨论】:

    • 这不是我的选择,性能成本可能太高了。我希望有一些可以匹配 URI 的“主机地址”部分的东西,那么剩下要比较的就是相对路径和端口......
    【解决方案2】:

    您可以使用 python 用漂亮的汤来做到这一点(抓取页面并检查一些元素是否相同)但是它会更慢,因为您需要提取实际的网络数据。

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      相关资源
      最近更新 更多