我正在尝试使用 JSTL 从 url 获取域名。我知道的 2 种方法返回了错误的信息。我需要 URL 中的确切内容。
当我这样做时:
${pageContext.request.remoteHost}
我得到我的服务器的 IP。
当我这样做时:
${pageContext.request.serverName}
我通常会得到正确的域名,但在亚马逊的服务器上,它返回的是“server1”而不是正确的域名,这可能是因为它处理多个域的方式。
有谁知道如何在 URL 中获取当前域名?
我可能需要获取 URL 然后解析它。我该怎么做?
最佳答案
你应该使用 ServletRequest#getLocalName()
反而。它返回服务器的真实主机名。 ServletRequest#getServerName()
确实返回在 Host
header 中设置的值。
${pageContext.request.localName}
就是这样。其他答案中建议的解决方案很笨拙。
顺便说一句,ServletRequest#getRemoteHost()
不返回服务器的主机名,而是客户端的主机名(或主机名无法立即解析时的 IP)。当您在同一台机器上运行网络服务器和网络浏览器时,它显然与服务器的相同。如果您对服务器的 IP 感兴趣,请使用 ServletRequest#getLocalAddr()
.术语“本地”和“远程”必须从服务器的角度来解释,而不是从客户端的角度。毕竟是所有 Java 代码运行的服务器。
关于java - 使用 JSTL 获取 url 中的域名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806045/