[英]What's the safest way to determine if 2 URLs are the same?
如果我有URL A说http://www.example.com/
和另一个,请说http://www.example.com
。 什么是最安全的方法来确定两者是否相同,而不查询网页并进行差异?
例子:
http://www.example.com/
VS http://www.example.com
(上文提到) http://www.example.com/aa/../
VS http://www.example.com
编辑:澄清:只是想根据RFC 1738标准知道URL在等效的上下文中是否相同。
在.Net中,您可以使用System.Uri类。
让u1 =新的Uri(“ http://www.google.com/ ”);;
val u1:Uri = http://www.google.com/
让u2 =新的Uri(“ http://www.google.com ”);;
val u2:Uri = http://www.google.com/
u1.Equals(U2);;
val it:bool = true
要进行更细粒度的比较,可以使用Uri.Compare方法。 还有静态方法来处理Uri字符串中各种形式的字符转义和编码,这无疑在彻底处理主题时非常有用。
没有请求URL,你几乎无能为力。 但您可以定义几个启发式方法:
.htm
和.html
是一样的 /base/
和/base/
/base/index.html
是相同的 url.com
和www.url.com
相同。 这完全取决于“相同”的URL究竟是什么意思。
为了让那些不了解F#的人受益,这里有一个快速而肮脏但完整的C#控制台应用程序,它演示了如何使用Uri类来判断两个URL是否相同。 运行此代码时,您应该看到两行:“true”,后跟“false”:
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);
}
}
}
Yuval A答案中添加的内容很少:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.