2012-07-03 28 views
1

我需要查看某個請求是否來自某個域(www.domain.com)。Java - 如何查看請求是否來自某個域?

到目前爲止,我只知道如何獲取請求的IP地址(通過使用request.getRemoteHost()方法)。問題是,一個域可能會映射到很多(用於平衡的目的)不同的IP地址,所以我不能做這樣的事情:

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

,因爲有可能是DNS服務器返回不同的IP地址當它解決www.domain.com。

我希望能夠做這樣的事情:

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

但到目前爲止,我不知道(和谷歌沒有幫助我)如何做到這一點。

有人有什麼想法嗎?

預先感謝您! :)

+0

可能的重複[需要對java中的特定IP地址執行反向DNS查找](http://stackoverflow.com/questions/7097623/need-to-perform-a-reverse-dns-lookup-of -a-particular-ip-address-in-java) – gpeche

回答

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; 
     } 
    } 

希望這代碼也可以幫助別人!

2

你可以給IP提供InetAddress,並致電getCanonnicalHostName()

+0

嗨,Alex。感謝您的快速回復。不幸的是getCanonnicalHostName()不起作用。它也返回給我的IP地址,而不是域。 =( – Tiago

+0

反向查找可能不適用於您,但請查看評論中提到的某人的線索。 –

相關問題