Java request.remoteAddress在scala中提供本地IP

Java request.remoteAddress在scala中提供本地IP,java,scala,playframework,Java,Scala,Playframework,我在Heroku上有一个Scala play框架应用程序。我想获取远程主机IP地址,但printlnrequest.remoteAddress给出的是10.165.120.180,似乎是本地IP Heroku对应用程序使用代理服务器,这就是为什么您获得本地计算机的IP,而您需要读取名为X-Forwarded-for的公共头,有关详细信息,请参阅 X-Forwarded-For:连接到Heroku路由器的客户端的原始IP地址 启动play 2.4.x,我们改为配置trustedProxies,然后

我在Heroku上有一个Scala play框架应用程序。我想获取远程主机IP地址,但printlnrequest.remoteAddress给出的是10.165.120.180,似乎是本地IP

Heroku对应用程序使用代理服务器,这就是为什么您获得本地计算机的IP,而您需要读取名为X-Forwarded-for的公共头,有关详细信息,请参阅

X-Forwarded-For:连接到Heroku路由器的客户端的原始IP地址


启动play 2.4.x,我们改为配置trustedProxies,然后将正确设置remoteAddress和安全标志

您需要将play.http.forwarded.trustedProxies显式设置为受信任的代理列表。此设置的默认值是环回,即[127.0.0.1,::1],这基本上意味着仅信任环回。当然,在很多情况下,大多数情况下它都不起作用

如果您不知道或不关心什么是您的受信任代理,请将其设置为“信任所有最可能是您想要的”,如下所示:

play.http.forwarded.trustedProxies=["0.0.0.0/0", "::/0"]

但它也适用于2.4.x。如果不使用play 2.4.3版或之前的版本进行设置,您可能会很幸运。然而,有一个对2.4.4的后端口修复,它改变了以前的2.4.x行为。这可能会让你大吃一惊。

问题很简单,但最好弄清楚问题所在,没有理由关闭和/或否决它!这个问题很好。为什么投票被否决?