我有一个 Web 应用程序,它依赖于保留FQDN的浏览器客户端才能使其工作,但发生的情况是,在多个浏览器中,我看到 url 被转换为 ip 地址 url(包含正确的 IP 地址)正在通过来自 Web 服务器的重定向进行更改。
托管资源的 Web 服务器是 Cassini,HttpRequest 类Url 属性返回 URL 中的 IP 地址,而不是 FQDN。
关于如何改变这种行为的任何建议?
这可能是您的 Web 服务器中的错误配置。在 apache 中(例如),可以在使用ServerName
指令执行某些重写过程时设置要使用的规范主机名。一种常见的情况是 Web 服务器在 URL 的末尾添加斜杠(“ http://example.com/path”→“http://192.168.1.1/path/ ”)。
我建议看看 curl 发生了什么。
这不是 DNS 问题,而是 Web 服务器配置问题。
是的,DNS 用于将 URL 的主机名部分转换为 IP 地址。
但是,该 IP 地址永远不会出现在浏览器栏中,除非 Web 服务器通过发送重定向告诉它。
感谢所提供的有用信息,我能够将此问题追溯到作为 Cassini 实现的一部分的 .NET Framework的HttpWorkerRequest抽象类的不完整实现。Cassini 实现未能覆盖 GetServerName,并且基本实现返回的是 IP 地址而不是域名。