网站搜索

Web 服务器如何知道您是否使用直接 IP 地址访问?


通常,我们只是输入我们想要查看的网站地址,但如果我们使用直接 IP 地址,网络服务器真的会“知道”吗?今天的 SuperUser Q&A 帖子为困惑的读者问题提供了答案。

今天的问答环节由 SuperUser 提供,这是 Stack Exchange 的一个分支,一个由社区驱动的问答网站分组。

照片由 Cory M. Grenier (Flickr) 提供。

问题

超级用户 Joseph A. 想知道 Web 服务器如何判断您是否使用直接 IP 地址访问:

某些 Web 服务器在使用其 IP 地址访问时会返回不允许直接 IP 地址访问的错误。一段时间以来,我一直在想这是如何工作的。

浏览器是否总是解析 IP 地址并连接到它?直接 IP 地址访问只是完全跳过 DNS,对吗?远程服务器怎么知道你跳过了 DNS?

Web 服务器如何知道您是否使用直接 IP 地址访问?

答案

超级用户贡献者 iAdjunct 为我们提供了答案:

要回答您关于它如何知道的问题,它与您的浏览器向 Web 服务器发送的内容有关。没错,系统总是将其解析为 IP 地址,但浏览器会在 HTTP 标头中发送您尝试访问的 URL。

这是我在网上找到的示例标头,经过修改后看起来就像您在 Windows 上使用 Firefox 并在地址栏中键入 apple.com 一样:

如果您使用其 IP 地址,标头将如下所示:

这两个都将通过套接字发送到相同的 IP 地址,但浏览器会告诉 Web 服务器它访问了什么。为什么?因为具有相同 IP 地址的 Web 服务器可能托管多个网站并为每个网站提供不同的页面。它无法通过 IP 地址区分谁想要哪个页面,因为它们都有相同的 IP 地址,但它可以通过 HTTP 标头区分它们。

有什么要补充的吗?在评论中关闭。想从其他精通技术的 Stack Exchange 用户那里阅读更多答案吗?在此处查看完整的讨论主题。