【发布时间】:2017-09-21 21:43:10
【问题描述】:
我有一个使用 MaxMind 本地数据库根据 IP 地址对用户进行地理定位的站点。我发现桌面上的结果与手机上的结果不同。例如:
- 我正在使用 X-Forwarded-For 标头进行地理定位
- 我的手机在邮政编码 18036 中找到我,大约 50 英里 关闭。
- 我使用 IPv4/IPv6 Dual-Stack Test 在手机上查找 ip 地址
- 使用桌面上的浏览器扩展,我将 X-Forwarded-For 标头设置为相同的 IP 地址
- 桌面将我放在 19428 中,这仍然是错误的,但是很多 更接近正确
为什么会有差异?
这是我执行查找的方式:
var ip = httpContext.Request.Headers["X-Forwarded-For"];
CityResponse cityResponse;
using (_dbReader = new DatabaseReader(fullPath, FileAccessMode.Memory))
{
cityResponse = _dbReader.City(ip);
}
更新
您的手机是否与桌面连接到同一个 WiFi?还是通过 3G/4G 连接?
没有。为确保手机和桌面查看相同的内容:
我的网站明确查看 IP 以获取位置 - 我没有利用浏览器位置服务,它可能使用多种方法来确定您的位置。
在手机上搜索时,我关闭了wifi,所以肯定是在使用3G/4G
在手机上定位后,我在浏览器中使用“我的 IP”检索了手机的 IP 地址
-
我在浏览器中使用 X-Forwarded-For 标头欺骗了手机的 IP,并确保我的网站正在查看该标头而不是实际 IP(本来是内部 IP)
【问题讨论】:
-
您的手机是否与您的桌面连接到同一个 WiFi?还是通过 3G/4G 连接?
-
对否决票的任何解释?老实说想知道所以我不会再这样做了。
-
我投了反对票,因为我问了一个你似乎没有回答的问题。 您确实有点在针对以下答案的评论中回答了该问题,但您没有使用该信息更新您的帖子 - 以便其他人可以轻松找到。
标签: c# geolocation maxmind