【问题标题】:System.Uri Host contains trailingSystem.Uri 主机包含尾随
【发布时间】:2014-01-02 14:22:58
【问题描述】:

解析 http 流量后,我注意到我检索到的域不正确。

Uri www.youtube.com./somepath/index.html

  • 预计 www.youtube.com
  • 实际 www.youtube.com。

我使用了以下代码:

var ub = new UriBuilder("www.youtube.com.");
var u = ub.Uri;
Console.WriteLine(u.Host);

有没有简单的方法来解决这个问题?我不认为.应该在主机中。

【问题讨论】:

  • 域值是否始终以相同的方式“损坏”?例如,总是有一个多余的尾随句点,如您的示例所示?或者您是否还发现了其他违规行为?
  • 我们正在尝试根据引用者对网站访问进行分组,这在 Uri 和 UriBuilder 的工作方式中似乎是一个奇怪的怪癖。

标签: c# uri


【解决方案1】:

您可以使用它来删除开头和尾随 (.) 点:

string url = "www.youtube.com.";
url = url.trim(".");

【讨论】:

    【解决方案2】:

    您可能没有您认为的问题!

    参考问题Why is to. a valid domain name?,the accepted answer开头:

    最后一个点是完全限定域名的一部分。

    浏览器是否真正解析带有尾随句点的域名似乎取决于域名。例如,Firefox 26 和 Internet Explorer 9 都显示此 URL

    http://www.youtube.com./yt/about/
                          ^
    

    但是这个网址显示:

    http://stackoverflow.com./about
                            ^
    

    为了确认这两个域名的合法性,我把它们都传给了nslookup

    nslookup www.youtube.com.
    nslookup stackoverflow.com.
    

    确实,我发现每个域名都已解析。

    因此,使用您的浏览器似乎并不是验证域名本身的权威方法。

    至于为什么某些 URL 在浏览器中解析时在域名末尾带有句点,而其他 URL 则没有,这似乎是另一个问题的基础。

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 2017-09-15
      • 2012-06-18
      • 2015-05-24
      • 2022-12-11
      • 2011-06-07
      • 2014-01-18
      • 2015-01-01
      • 2022-01-22
      相关资源
      最近更新 更多