2010-01-26 7 views
12

मेरे पास रूबी में इस तरह का कोड था:आप Grails नियंत्रक में क्लाइंट आईपी पता कैसे प्राप्त करते हैं?

@clientipaddress = request.env["HTTP_CLIENT_IP"] 
if (@clientipaddress == nil) 
    @clientipaddress = request.env["HTTP_X_FORWARDED_FOR"] 
end 
if (@clientipaddress == nil) 
    @clientipaddress = request.env["REMOTE_ADDR"] 
end 
if (@clientipaddress != nil) 
    comma = @clientipaddress.index(",") 
    if (comma != nil && comma >= 0) 
    @clientipaddress = @clientipaddress[0, comma] 
    end 
end 

यह आईपी दिखाए जा सकने वाले सभी संभावित तरीकों का ख्याल रखता है। उदाहरण के लिए, मेरी स्थानीय विकास मशीन पर, कोई प्रॉक्सी नहीं है। लेकिन क्यूए और उत्पादन में प्रॉक्सी वहां हैं, और कभी-कभी वे एक से अधिक पते प्रदान करते हैं।

मुझे ग्रोवी सिंटैक्स को जानने की आवश्यकता नहीं है, बस मुझे किन तरीकों से ऊपर आईपी के लिए पूछने के तीन तरीकों के बराबर मिलते हैं।

उत्तर

34

मुझे लगता है कि यह होना चाहिए कि आप क्या चाहते:

  • request.getRemoteAddr()
  • request.getHeader("X-Forwarded-For")
  • request.getHeader("Client-IP")
+0

त्वरित प्रतिक्रिया के लिए धन्यवाद। – Andrew

+0

मैंने कोशिश की लेकिन प्राप्त करें: "ऐसी कोई संपत्ति नहीं: अनुरोध" ने 1h googlin इस त्रुटि को खर्च किया है, कोई भाग्य नहीं। किसी को पता है कि इसे कैसे हल करें? –

+1

क्या आप इसे नियंत्रक के अंदर कर रहे हैं? यह एक इंजेक्शन संपत्ति है और वहां होना चाहिए। – Neoryder

संबंधित मुद्दे