1

我需要查看请求是否来自某个域(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")

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

有人有什么想法吗??

先感谢您!:)

4

2 回答 2

2

您可以将 IP 提供给InetAddress并调用getCanonnicalHostName()吗?

于 2012-07-03T21:37:44.370 回答
1

在联系了我试图验证请求来自的域之后,他们向我提供了他们的服务器可能开始请求的整个 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;
        }
    }

希望这段代码也能帮助别人!

于 2012-07-06T03:19:47.403 回答