代码之家  ›  专栏  ›  技术社区  ›  Hao Wooi Lim

确定两个URL是否相同的最安全方法是什么?

  •  5
  • Hao Wooi Lim  · 技术社区  · 15 年前

    http://www.example.com/ 还有一个,比如说 http://www.example.com

    示例:

    1. http://www.example.com/ http://www.example.com
    2. http://www.example.com/aa/../ http://www.example.com

    编辑:

    4 回复  |  直到 15 年前
        1
  •  13
  •   codekaizen    15 年前

    在.Net中,可以使用 System.Uri

    http://www.google.com/ ");;

    http://www.google.com/

    设u2=新Uri(“ http://www.google.com

    val u2:Uri= http://www.google.com/

    val it:bool=真

    要进行更细粒度的比较,可以使用 Uri.Compare 方法。还有一些静态方法来处理Uri字符串中各种形式的字符转义和编码,这无疑会在彻底处理主题时证明是有用的。

        2
  •  1
  •   Yuval Adam    15 年前

    如果不请求URL,您几乎无能为力。但您可以定义几种启发式方法:

    1. 删除尾部斜杠
    2. 考虑 .htm .html
    3. /base/ /base/index.html 都是一样的
    4. 考虑 url.com www.url.com 相同的。

        3
  •  1
  •   Joey deVilla    15 年前

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(IsSameUrl("http://stackoverflow.com/", "http://stackoverflow.com").ToString());
                Console.WriteLine(IsSameUrl("http://stackoverflow.com/", "http://codinghorror.com").ToString());
                Console.ReadKey();
            }
    
            static bool IsSameUrl(string url1, string url2)
            {
                Uri u1 = new Uri(url1);
                Uri u2 = new Uri(url2);
                return u1.Equals(u2);
            }
        }
    }
    
        4
  •  0
  •   STO    15 年前

    Yuval A的答案中有几点需要补充:

    • www.google.com 和 http://www.google.com 梅指向同一个目标
    • 可以对Url进行编码(请参阅HttpUtility.UrlEncode/Decode方法)
    推荐文章