दिलचस्प पोस्ट
सी में साधा सरणी पता लगाएँ कि किस शाखा को एक स्थानीय शाखा ट्रैकिंग कर रही है स्पार्क में संपीड़न से संपूर्ण टेक्स्ट फाइलें पढ़ें मैं jQuery UI संवाद पर एक बटन कैसे अक्षम कर सकता हूं? नामस्थान के साथ कंपाइलर के दिलचस्प व्यवहार PySpark की कम करने के लिए एक कुंजी के रूप में एक सूची बाइक HTML को पार्स करने के लिए lxml.html का उपयोग करते समय InnerHTML के समतुल्य किसी उपयोगकर्ता ने अपलोड करने के लिए किसी फ़ाइल को चुन लिया है या नहीं तो कैसे परीक्षण करें? जब MySQL के बजाय MySQLi का उपयोग करना चाहिए I NSDictionary ऑब्जेक्ट को एनएसडीटा ऑब्जेक्ट में परिवर्तित करना और उप-विपरीत जावास्क्रिप्ट में तारों को स्थानांतरित करें जावास्क्रिप्ट में + = "1,23,4" क्यों है? एसक्यूएल का चयन करें जहां फ़ील्ड में शब्द हैं XMLStarlet में लंबे संपादन सूचियों को प्रबंधित करना जावास्क्रिप्ट में प्रॉपर्टी और विधि नामों के लिए अंडरस्कोर प्रीफ़िक्स

getCurrentPosition () और watchPosition () असुरक्षित मूल पर बहिष्कृत कर रहे हैं

मुझे अपनी वेबसाइट पर यह त्रुटि मिल रही है जो उपयोगकर्ता से जियोलोकेशन डेटा का अनुरोध करता है:

getCurrentPosition () और watchPosition () असुरक्षित मूल पर बहिष्कृत कर रहे हैं, और भविष्य में समर्थन को हटा दिया जाएगा। आपको अपने एप्लिकेशन को एक सुरक्षित मूल, जैसे HTTPS पर स्विच करने पर विचार करना चाहिए। अधिक जानकारी के लिए goo.gl/rStTGz देखें।

मेरा मतलब है कि इसका मूल रूप से सिर्फ एक नोटिस है, और Google लिंक बस कहता है कि उसे नापसंद किया जा रहा है

मेरी वेबसाइट को SSL पर ले जाने की कोई योजना नहीं है … तो मेरे जैसे किसी के लिए कोई विकल्प है?

Solutions Collecting From Web of "getCurrentPosition () और watchPosition () असुरक्षित मूल पर बहिष्कृत कर रहे हैं"

यहां / jstillwell की पोस्ट्स में एक संभावित जवाब मिला: https://github.com/stefanocudini/leaflet-gps/issues/15 मूलतः इस सुविधा का समर्थन नहीं किया जाएगा (केवल क्रोम में?) भविष्य में, लेकिन केवल HTTP साइटों के लिए HTTPS अभी भी ठीक होगा, और HTTP उपयोग के लिए एक समान प्रतिस्थापन बनाने की कोई योजना नहीं है

क्योंकि आपकी वास्तुकला के आधार पर HTTPS पर स्विच करना दर्दनाक या असंभव हो सकता है, मुझे एक वैकल्पिक हल मिल गया है: आप Google मानचित्र जियोलोकेशन एपीआई का उपयोग कर सकते हैं। यद्यपि इसके उपयोग की सीमाएं हैं, यह नौकरी करता है आपको एक ब्राउज़र एपीआई कुंजी की आवश्यकता होगी, इसलिए इसे अपने पेज होस्टनाम के उपयोग के लिए सीमित करना न भूलें।

मैं इसे getCurrentPosition() पद्धति के लिए एक फ़ॉलबैक विधि के रूप में उपयोग करता हूं अगर यह विफल हो जाता है जब तक मैं HTTPS पर स्विच नहीं करता तब तक मुझे इसे काम करने की इजाजत देता है।

यहां JSFiddles है:

  • HTTP : getCurrentPosition() असफल हो जायेगी और एपीआई पर वापस आ जाएगी
  • HTTPS : getCurrentPosition() सफल होगा

आप इस के लिए https://ipinfo.io API का उपयोग कर सकते हैं (यह मेरी सेवा है)। 1,000 रु / दिन (एसएसएल समर्थन के साथ या बिना) के लिए यह मुफ़्त है। यह आपको निर्देशांक, नाम और अधिक देता है यहां एक उदाहरण है:

 curl ipinfo.io { "ip": "172.56.39.47", "hostname": "No Hostname", "city": "Oakland", "region": "California", "country": "US", "loc": "37.7350,-122.2088", "org": "AS21928 T-Mobile USA, Inc.", "postal": "94621" } 

यहां एक उदाहरण दिया गया है जो एपीआई प्रतिक्रिया के साथ एक कॉओड्स ऑब्जेक्ट तैयार करता है जो आपको मिलते- getCurrentPosition() से मिलता है।

 $.getJSON('https://ipinfo.io/geo', function(response) { var loc = response.loc.split(','); var coords = { latitude: loc[0], longitude: loc[1] }; }); 

और यहां एक विस्तृत उदाहरण है जो दिखाता है कि आप इसे getCurrentPosition() लिए एक फ़ॉलबैक के रूप में कैसे उपयोग कर सकते हैं:

 function do_something(coords) { // Do something with the coords here } navigator.geolocation.getCurrentPosition(function(position) { do_something(position.coords); }, function(failure) { $.getJSON('https://ipinfo.io/geo', function(response) { var loc = response.loc.split(','); var coords = { latitude: loc[0], longitude: loc[1] }; do_something(coords); }); }; }); 

अधिक जानकारी के लिए http://ipinfo.io/developers/replacing-nivigator-geolocation-getcurrentposition देखें।

हाँ। Google Chrome ने इस सुविधा को संस्करण 50 में बहिष्कृत कर दिया है। यदि आप इसे क्रोम में उपयोग करने की कोशिश करते हैं तो त्रुटि है:

getCurrentPosition() and watchPosition() are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins for more details.

इसलिए, आपको SSL प्रमाणपत्र जोड़ना होगा ठीक है, यह एकमात्र तरीका है

और यह अब काफी आसान है चलो एनक्रिप्ट करें का उपयोग कर यहाँ गाइड है

और परीक्षण प्रयोजन के लिए आप यह कोशिश कर सकते हैं:

1.localhost HTTP पर एक सुरक्षित मूल के रूप में माना जाता है, इसलिए यदि आप स्थानीय सर्वर से अपने सर्वर को चलाने में सक्षम हैं, तो आप उस सर्वर पर सुविधा का परीक्षण करने में सक्षम होना चाहिए।

2. आप क्रोम को -संसुली-ट्रीट-असुरस-मूल-जैसा-सुरक्षित = "http://example.com" फ्लैग (जिसे आप वास्तव में परीक्षण करना चाहते हैं उसके साथ "example.com" की जगह) के साथ चला सकते हैं, जो इस सत्र के लिए उस मूल के रूप में सुरक्षित होगा। ध्यान दें कि आपको कार्य करने के लिए ध्वज के लिए एक नई परीक्षण प्रोफ़ाइल बनाने के लिए –user-data-dir = / test / only / profile / dir को शामिल करना होगा।

मुझे लगता है कि फ़ायरफ़ॉक्स ने उपयोगकर्ता को जिओलेकेशन एपीआई अनुरोधों को http से भी एक्सेस करने से रोक दिया था। यहां वेबकिट चैंजलॉग है: https://trac.webkit.org/changeset/200686

आप क्रोम को – सुरक्षित रूप से इलाज-असुरक्षित-मूल-जैसा-सुरक्षित = "http://example.com" ध्वज (आप जो वास्तव में परीक्षण करना चाहते हैं उसके साथ "example.com" को बदलकर) चला सकते हैं, जो कि व्यवहार करेगा यह सत्र इस सत्र के लिए सुरक्षित है ध्यान दें कि आपको कार्य करने के लिए ध्वज के लिए एक नई परीक्षण प्रोफ़ाइल बनाने के लिए –user-data-dir = / test / only / profile / dir को शामिल करना होगा।

उदाहरण के लिए यदि विंडोज का उपयोग करें, क्लिक करें प्रारंभ करें और चलाएँ।

 chrome --unsafely-treat-insecure-origin-as-secure="http://localhost:8100" --user-data-dir=C:\testprofile 

HTTP में त्रुटि होती है

लेबल में स्थानीय होस्ट के लिए अनुमति सेट करें (इन HTTP रेफरर (वेब ​​साइट्स) से अनुरोध स्वीकार करें।

यह मेरे लिए काम किया

अगर आप इसे अपने डेवलपमेंट पर्यावरण पर परीक्षण करना चाहते हैं, तो FireFox बजाय FireFox या अन्य ब्राउज़र का उपयोग करें, उत्पादन के लिए https का उपयोग करने के अलावा कोई रास्ता नहीं है

विकास पर्यावरण के लिए सिर्फ खुले http://localhost:8100/ फ़ायरफ़ॉक्स पर और ऐसी कोई त्रुटि नहीं है।

ओह प्रिय, यह अभी अभी लागू हुआ है। एक SSL प्रमाणपत्र स्थापित करने का समय:

 getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. 

मुझे पता है कि भौगोलिक स्थान एपीआई बेहतर है, लेकिन उन लोगों के लिए जो एसएसएल का उपयोग नहीं कर सकते, आप अभी भी कुछ प्रकार की सेवाओं का उपयोग कर सकते हैं जैसे कि जियोप्लुगिन सेवा

जैसा कि दस्तावेज़ में निर्दिष्ट किया गया है आप केवल सेवा यूआरएल http://www.geoplugin.net/php.gp?ip=xx.xx.xx.xx को आईपी के साथ एक अनुरोध भेजते हैं, आउटपुट एक सीरिजलाइज्ड सरणी है ताकि आपको आवश्यकता हो इसे प्रयोग करने से पहले इसे अनसुलेट करने के लिए।

याद रखें यह सेवा बहुत सटीक नहीं है क्योंकि भौगोलिक स्थान है, लेकिन यह अभी भी आसान और तेज समाधान है।