2010-09-17 113 views
2

我在Uri有一些网址。我如何检查这个网址是否是某个网域或子网域的一部分。允许在Uri的域名/子域名

实施例:

URL:

http://www.example.com/something/index.apsx?lala=ddsadasd&dasdas=dsdas&dsdsd=ikpi&das=asd 

允许:

http://www.example.com/something/ 

不aloowed:

http://www.example.com/some/ 

如果URL是在允许域然后代码继续执行。

+2

请添加几个允许/不允许的情况下。 – Restuta 2010-09-17 15:20:21

回答

2
Uri uri = new Uri("http://www.example.com/folder/page.ext?foo=bar"); 
uri.Segments.Contains("folder"); // true 
uri.DnsSafeHost.Split('.').Contains("example"); // true 

uri.Segements是:

  • “/”
  • “东西/”
  • “index.ext”

DnsSafeHost.Split('.')是:

  • WWW
  • 例如
  • COM

,所以你可以根据需要使用此数据操纵。

编辑:

uri.Segments.Any(s => String.Equals(s.Replace("/", String.Empty), "something", StringComparison.OrdinalIgnoreCase)); 
uri.DnsSafeHost.Split('.').Any(s => String.Equals(s, "example", StringComparison.OrdinalIgnoreCase)); 
+0

如果您尝试匹配的目标域名是mybank.com,是否与hahastealyourmoney.com/mybank.com匹配? – 2010-09-17 15:26:47

+0

编辑 但uri.DnsSafeHost.Split('。')。Contains(“example”)也会匹配example.stealmymoney.com,也许只是检查DnsSafeHost是否以适当的域名结束。 – 2010-09-17 15:33:14

+0

thx寻求帮助。我会尝试你的建议。 – senzacionale 2010-09-17 16:09:23