本地主机中的 GeoIP
Posted
技术标签:
【中文标题】本地主机中的 GeoIP【英文标题】:GeoIP in localhost 【发布时间】:2014-05-08 15:10:32 【问题描述】:我正在使用 GeoIP 从客户端地址获取国家/地区,但它返回 null
ip = (req.headers['x-forwarded-for'] || '').split(',')[0] || req.connection.remoteAddress;
country = geoip.lookup(ip).country;
我认为这是因为我使用的是 localhost,因为检测到的 ip 是 127.0.1。 如何解决?
【问题讨论】:
如果不使用 localhost 会发生什么?如果您的服务器可以公开访问,我会点击链接并让您知道它对我的意义。 @AdamD.Ruppe 它在gentle-plains-8744.herokuapp.com 上用同样的方法为我工作 当您获得 forwarded-for 标头的本地环回时,然后回到链上,直到您有一个 public on @ratchetfreak 我很抱歉我很愚蠢,但我不明白。 【参考方案1】:您可以使用http://fugal.net/ip.cgi 或http://ifconfig.me/ip 等服务通过http.get()
获取您的外部IP 地址,或使用child_process.exec()
运行shell 命令(如OS X 上的$ ip
),但它不是交叉平台解决方案。我认为使用http.IncomingMessage
对象(req
)或os.networkInterfaces()
方法获取本地机器外部IP是不可能的。
在您的情况下,我会默认使用某个国家/地区/纬度/任何您需要的 null
和 geoip.lookup()
,至少在开发环境中。
var geo = geoip.lookup(ip);
var country = geo ? geo.country : 'US';
【讨论】:
谢谢,这就是我要做的,但我将不得不等待生产来测试它是否有效:(以上是关于本地主机中的 GeoIP的主要内容,如果未能解决你的问题,请参考以下文章
Rails GeoLiteCity GeoIP 在本地开发环境中不起作用