2010-09-17 1 views
2

У меня есть URL-адрес в Uri. Как я могу проверить, является ли этот URL частью какого-либо домена или поддомена.разрешенные домены/поддомены в 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

ответ

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
  • пример
  • ком

так что вы можете манипулировать с этими данными, как вы хотите.

Edit:

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? –

+0

редактирование для редактирования , но uri.DnsSafeHost.Split ('.'). Содержит («пример») также будет соответствовать example.stealmymoney.com, возможно, просто проверьте, что DnsSafeHost заканчивается соответствующим доменом. –

+0

thx для справки. Я попробую ваши предложения. – senzacionale