我需要使主机脱离Request对象。我应该使用哪个属性,为什么?

从MSDN:







我的测试是使用ASP.NET开发服务器进行的。这两个总是返回localhost。即使当我输入127.0.0.1时,两者都返回localhost

继续阅读,DnsSafeHost属性将处理IPv6地址,以及根据需要将Unicode转换为ASCII。它还可以考虑IRI和IDN。即使我目前不关心这些事情,还是应该只使用DnsSafeHost属性来确保安全吗?

最佳答案

如果您打算自己将结果主机名发送到DNS服务器,则将DnsSafeHost应用于URL。 DNS最初是仅ASCII协议(protocol)(and a subset of ASCII at that)。当前的URL允许URL的主机部分中的字符序列,这些字符序列不能直接发送到DNS服务器。例如:

  • bracket-enclosed IPv6 addresses。 DnsSafeHost放括号。
  • 非ASCII,非英语域名。 DnsSafeHost(可选)使用RFC 3987 IRI标准化字符,并将非ASCII字符转换为IDNPunycode编码。
  • 谁知道将来会允许哪些URL?该应用程序可能会超出我们对URL没问题的假设。 DnsSafeHost在那里增加了一定程度的弹性。

  • 如果需要向用户显示主机名,请改用Host属性。

    关于c# - 主机与DnsSafeHost,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1224587/

    10-13 03:11