【问题标题】:Java - How to see if a request is comming from a certain domain?Java - 如何查看请求是否来自某个域?
【发布时间】:2012-07-04 09:25:19
【问题描述】:

我需要查看请求是否来自某个域 (www.domain.com)。

到目前为止,我只知道如何获取请求的 IP 地址(通过使用 request.getRemoteHost() 方法)。问题是一个域可能映射到许多不同的 IP 地址(出于平衡目的),所以我不能做这样的事情:

   request.getRemoteHost().equals("200.50.40.30")

因为 DNS 解析 www.domain.com 时返回的 IP 地址可能不同。

我希望能够做这样的事情:

   request.getRemoteHost().equals("www.domain.com")

但到目前为止,我不知道如何做到这一点(谷歌也没有帮助我)。

有人有什么想法吗?

提前感谢您! :)

【问题讨论】:

标签: java dns request ip compare


【解决方案1】:

您可以将 IP 提供给 InetAddress 并致电 getCanonnicalHostName() 吗?

【讨论】:

  • 嗨,亚历克斯。感谢您的快速回复。不幸的是 getCanonnicalHostName() 不起作用。它还会返回 IP 地址而不是域。 =(
  • 反向查找可能对您不起作用。但是检查一下有人在 cmets 中提到的线程。
【解决方案2】:

在联系我试图验证请求来自的域后,他们向我提供了他们的服务器可能开始请求的整个 IP 范围。掌握了所有这些 IP 和掩码,这就是我为验证请求来自他们所做的操作:

        //Those IPs and Maks were provided by the domain
    String[] ipsAndMasks = { "AAA.BBB.CCC.DDD/26",
                         "EEE.BBB.CCC.DDD/24",
                 "FFF.BBB.CCC.DDD/29",
                 "GGG.BBB.CCC.DDD/22"};

    Collection<SubnetInfo> subnets = new ArrayList<SubnetInfo>();
    for (String ipAndMask : ipsAndMasks) {
        subnets.add(new SubnetUtils(ipAndMask).getInfo());
    }

    boolean requestIsComingFromTheCorrectDomain = false;
    String ipAddress = request.getRemoteAddr();
    for (SubnetInfo subnet : subnets) {
        if (subnet.isInRange(ipAddress)) {
            requestIsComingFromTheCorrectDomain = true;
            break;
        }
    }

希望这段代码也能对某人有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多