गाइड

Node या PHP ऐप में सर्वर-साइड जियोलोकेशन जोड़ें

ज़्यादातर उपयोगों के लिए, जिनमें पर्सनलाइज़ेशन, डिफ़ॉल्ट और एनालिटिक्स शामिल हैं, जियोलोकेशन सर्वर पर होनी चाहिए, क्योंकि इसके लिए न विज़िटर के ब्राउज़र के सहयोग की ज़रूरत है और न क्लाइंट साइड पर चलने वाली किसी स्क्रिप्ट की।

अनुरोध स्वयं

भाषा चाहे जो हो, कॉल वही साधारण HTTP GET अनुरोध है जो /v1/ip पर जाता है, और कुंजी हेडर के रूप में भेजी जाती है।

GET /v1/ip?ip=203.0.113.60
X-API-Key: mg_live_examplekey123
{
  "status": "ok",
  "ip": "203.0.113.60",
  "version": 4,
  "found": true,
  "country": "Netherlands",
  "country_code": "NL",
  "region": "North Holland",
  "city": "Amsterdam",
  "postcode": "1012",
  "lat": 52.3702,
  "lon": 4.8952,
  "timezone": "Europe/Amsterdam",
  "asn": 3344,
  "org": "Example ISP"
}

PHP ऐप में

अनुरोध से विज़िटर का अपना पता लें, आमतौर पर $_SERVER['REMOTE_ADDR'], और उसे ip पैरामीटर के रूप में भेजें, फिर आपके PHP सेटअप में पहले से इस्तेमाल हो रहे HTTP क्लाइंट से HTTP अनुरोध करें, चाहे curl हो या उसके ऊपर बनी कोई लाइब्रेरी। चूँकि यह साइट खुद बिना क्लाइंट-साइड JavaScript के सर्वर-रेंडर किए गए PHP से बनी है, इसलिए यह पैटर्न पेज के सामान्य रेंडरिंग फ़्लो में स्वाभाविक रूप से फ़िट होता है, और पेज का मार्कअप बनने से पहले ही लोकेशन डेटा उपलब्ध रहता है।

Node ऐप में

आने वाले request ऑब्जेक्ट से विज़िटर का पता पढ़ें, आमतौर पर req.socket.remoteAddress से, या अगर आपके ऐप के आगे कोई रिवर्स प्रॉक्सी है तो उसके द्वारा सेट किए गए X-Forwarded-For जैसे हेडर से, और रिस्पॉन्स रेंडर करने से पहले अपनी पसंद के HTTP क्लाइंट से वही GET अनुरोध करें।

आपके ऐप के आगे प्रॉक्सी को संभालना

अगर आपका ऐप किसी लोड बैलेंसर या रिवर्स प्रॉक्सी के पीछे है, तो आपका कोड सीधे जो पता देखता है वह विज़िटर का नहीं, प्रॉक्सी का अपना पता हो सकता है। आपकी प्रॉक्सी जो भी फ़ॉरवर्डेड-एड्रेस हेडर सेट करती है उसे जाँचें और वह पता स्पष्ट रूप से ip पैरामीटर के रूप में भेजें, कनेक्शन के कच्चे रिमोट पते पर निर्भर न रहें, वरना विज़िटर के बजाय आपके अपने इंफ़्रास्ट्रक्चर की जियोलोकेशन हो जाएगी।

दोनों ही तरह अनुरोध की लागत

लुकअप की लागत वही एक अनुरोध है, चाहे उसे PHP से कॉल किया जाए या Node से या किसी अन्य बैकएंड भाषा से, क्योंकि लागत API तक पहुँचने वाले अनुरोध से जुड़ी है, इस बात से नहीं कि कॉल किसने की। हर पेज पर लुकअप दोहराने से बचने के लिए किसी भी भाषा में परिणाम को सेशन की अवधि तक कैश करें।

सर्वर-साइड जियोलोकेशन बैकएंड भाषा चाहे जो हो, एक ही तरह काम करती है: विज़िटर के पते के साथ एक HTTP कॉल। ऑथेंटिकेशन के सभी विकल्प ऑथेंटिकेशन दस्तावेज़ में हैं, और फ़ील्ड की सूची IPv4 लुकअप दस्तावेज़ में है।