如果我在端口3000上运行这个客户端应用程序并且它在我的API中请求构建在ExpressJS之上的东西,在端口8080上运行,我怎么知道该请求来自localhost:3000
?
我听说有些人在使用:
req.get('host') //or origin
req.headers.host //or origin
origin
不存在,主机返回localhost:8080
,即服务器端。我想要客户地址。
为什么在ExpressJS上获取此信息如此困难? 任何人都知道我该怎么做?
答案 0 :(得分:1)
客户端连接只有一个IP地址。它不是“来自”域名。您可以对IP地址执行反向查找,并查看它是否已在域中注册。但是,大多数客户端只会报告属于某个ISP的IP地址,而不是特定的域。
如果要检查客户端连接是否在运行服务器的同一主机上(您提到localhost所以我认为这就是您的意思),那么您可以只将客户端IP地址与服务器IP地址进行比较并看看它们是否相同。您可能需要规范化localhost可以报告的各种方式,并且您可能需要确保在报告真实IP地址时没有报告127.0.0.1
。
如果你解释了你想要解决的真正问题,那么我们可能会以另一种方式帮助你。