【问题标题】:allowed domains/subdomains in UriUri 中允许的域/子域
【发布时间】:2010-09-17 15:16:47
【问题描述】:

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

例子:

网址:

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

允许:

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

不允许:

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

如果 URL 在允许的域中,则代码继续执行。

【问题讨论】:

  • 请添加几个允许/不允许的场景。

标签: c# url uri


【解决方案1】:
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));

【讨论】:

  • 如果你要匹配的目标域是mybank.com,这不匹配hahastealyourmoney.com/mybank.com吗?
  • an edit for an edit but uri.DnsSafeHost.Split('.').Contains("example") 也将匹配 example.stealmymoney.com 也许只是检查 DnsSafeHost 是否以正确的域结尾。
猜你喜欢
  • 2023-03-27
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 2013-12-03
  • 2015-03-14
  • 2017-01-12
  • 2020-10-19
相关资源
最近更新 更多