c# - C# 确实需要外部 ip 来获得最大的心灵服务
问题描述
我们在我们的 Web 应用程序中使用 maxmind 地理 ip 定位服务。利用这个 maxmind,我们需要 ipaddress 作为输入。
我们按照下面的代码片段来获取 IP 地址。
var ip = Request.UserHostAddress;
if (Request.Headers["X-Forwarded-For"] != null)
{
ip = Request.Headers["X-Forwarded-For"];
Console.WriteLine(ip + "|X-Forwarded-For");
}
else if (Request.Headers["REMOTE_ADDR"] != null)
{
ip = Request.Headers["REMOTE_ADDR"];
Console.WriteLine(ip + "|REMOTE_ADDR");
}
我们在公司网络下,所以在本地环境以及开发环境中,我们习惯于获取像这样的私有IP地址 10.XXX
使用此地址,我们总是无法找到客户端位置。
所以真正的问题是,当您将外部/公共 ip(190.XXX) 传递给 maxmind 时,它只能工作。
我们真的需要获取外部/公共 ip 来为 maxmind 服务提供输入吗?
解决方案
您正确使用了 10.xx.xx.xx 范围,该范围保留供私人(内部)使用。
您需要做的就是更改您的代码,以便在 Maxmind 查找之前将要查找的“10”IP 替换为同一区域设置的“公共”IP。如果您的公司有多个位置,那么您可以创建一个内部 IP 数组/表来公开“区域设置识别”IP。
例如,如果美国洛杉矶的部门使用 10.222.xx.xx;和 NY,USA 使用 10.123.xx.xx 地址,然后对于这些 IP,只需使用“等效”公共 IP 进行 Maxmind 查找。因此,对于 10.123.xx.xx(美国纽约州),请改为查找 154.16.85.37。
您甚至可能根本不需要为您的“10 个 IP”使用 Maxmind。例如,如果您只需要国家代码;然后将其包含在您自己的“IP 10”查找表/数组中,对于前缀为 10 的 IP,而不是您自己的表中的 Maxmind 查找查找。
推荐阅读
- flutter - 我怎样才能得到2次之间的差异?
- debian - 如何让 debian 看到非免费固件文件?
- artificial-intelligence - 如何从 AIML 中的特定映射值中获取键值?
- python - 低级鼠标位置
- visual-studio-code - 如何在 Visual Studio 代码中关闭“包含强调的项目”?
- video - Safari 不想自动播放视频。如何解决这个问题?
- regex - 如何将字符串正则表达式转换为列表?
- python - 如何将两个折线图与 y 轴的(数字/百分比)和 x 轴的日期组合并使用 openpyxl 设置缩放
- javascript - 尝试将正弦波音频另存为 .wav 文件时出现错误
- python - Python XML 构建