لدى Chrome نية عامة لإيقاف نهائيًا ميزات فعّالة، مثل الموقع الجغرافي على مصادر غير آمنة، ونأمل أن يتّبع الآخرون هذا النهج.
اعتبارًا من الإصدار 50 من Chrome، لم يعُد Chrome يتيح الحصول على الموقع الجغرافي للمستخدم باستخدام واجهة برمجة التطبيقات HTML5 Geolocation API من الصفحات التي يتم عرضها من خلال اتصالات غير آمنة. وهذا يعني أنّ الصفحة التي تُجري طلب بيانات من واجهة برمجة التطبيقات Geolocation API يجب أن يتم عرضها من سياق آمن، مثل HTTPS.
هذه مشكلة مهمة لأنّها ستؤثّر مباشرةً في أيّ موقع إلكتروني يتطلّب استخدام واجهة برمجة التطبيقات لتحديد الموقع الجغرافي ولا يتم عرضه عبر https، ولكنّنا نعتقد أنّ هذا التغيير مفيد لجميع المستخدمين على الويب. من المفترض أن تساعدك هذه المشاركة في فهم السبب وكيفية المتابعة.
متى سيتمّ تطبيق هذا التغيير؟
بدأ سريان هذا التغيير اعتبارًا من الإصدار 50 من Chrome (الساعة 12 ظهرًا بتوقيت المحيط الهادئ في 20 نيسان (أبريل) 2016).
تقدّم وحدة تحكّم أدوات المطوّرين في Chrome تحذيرات منذ الإصدار 44
(الذي تم طرحه في 21 تموز (يوليو) 2015).
لقد تم نشر عدد من الإشعارات العامة التي توضّح الأسباب المنطقية
(والمناقشة) التي دفعتنا إلى إجراء هذا التغيير:
- النية المتّبعة لإيقاف مجموعة من الميزات الفعّالة نهائيًا على HTTP (شباط/فبراير 2015)
- القرار المتّخذ بإيقاف Geolocation API عبر بروتوكول HTTP نهائيًا (تشرين الثاني/نوفمبر 2015)
- مؤتمر مطوّري Chrome (تشرين الثاني/نوفمبر 2016)
- مدوّنة إصدار قناة Chrome التجريبية (17 آذار (مارس) 2016)
- الموقع الإلكتروني حالة Chrome
وقد أشارت إلى ذلك أيضًا عدة مصادر أخرى: Mobiforge (26 كانون الثاني/يناير 2016)، و Wired (17 آذار/مارس 2016)، و VentureBeat (13 نيسان/أبريل 2016).
ما السبب الذي دعا إلى إجراء هذا التغيير؟
الموقع الجغرافي هو بيانات حسّاسة. إنّ طلب استخدام بروتوكول HTTPS مطلوب لحماية خصوصية بيانات الموقع الجغرافي للمستخدمين. إذا كان الموقع الجغرافي للمستخدم متاحًا من سياق غير آمن، سيتمكّن المهاجمون على الشبكة من معرفة مكان هذا المستخدم، ما يشكّل تهديدًا خطيرًا لخصوصية المستخدم.
من سيتأثر بذلك؟
يؤثر ذلك في أي صفحة تستخدم حاليًا Geolocation API من الصفحات التي يتم عرضها عبر بروتوكول HTTP (غير آمن). ويؤثر ذلك أيضًا في إطارات iframe التي تستخدم HTTPS وتستخدم واجهة برمجة التطبيقات Geolocation API إذا كانت مضمّنة في صفحات HTTP. (لن تتمكّن من استخدام العناصر القابلة للاستبدال باستخدام إطار مشترَك يتم إرساله عبر بروتوكول HTTPS).
هل يحتاج تطبيق الويب بالكامل إلى بروتوكول HTTPS؟
ليس من المتطلّبات أن يتم عرض التطبيق بالكامل عبر HTTPS لاستخدام ميزة الموقع الجغرافي. يجب عرض الصفحات التي تستخدِم الموقع الجغرافي فقط من خلال سياق آمن. إنّ السياق الآمن حاليًا هو أيّ محتوى مستضاف في المستوى الأعلى على HTTPS أو المضيف المحلي. على سبيل المثال، لن يُسمح لإطار iframe الذي يشير إلى مصدر آمن ولكنه مستضاف على مصدر غير آمن (http ://paul.kinlan.me/) بطلب البيانات من واجهة برمجة التطبيقات للمواقع الجغرافية.
ننصحك بشدة بنقل البيانات إلى HTTPS لأنّ ميزات المتصفّح الجديدة والحالية القوية تتطلّب مصادر آمنة.
هل يؤثر ذلك في التطوير المحلي؟
من المفترض ألا يحدث ذلك، فقد تم تصنيف localhost على أنّه "آمن بشكلٍ محتمل" في المواصفات وفي حالتنا، ستظل طلبات الموقع الجغرافي التي يتم عرضها على المستوى الأعلى من خلال localhost صالحة.
هل يمكنني رصد ما إذا تم حظر الموقع الجغرافي أثناء التشغيل بسبب عدم توفّر سياق آمن؟
نعم. تحدِّد مواصفات الموقع الجغرافي عنصر PositionError
الذي يتم تمريره إلى دالة الاستدعاء عند حدوث خطأ في واجهات برمجة تطبيقات الموقع الجغرافي. يحدِّد العنصر
السمتَين code
وmessage
.
ستؤدي الأخطاء الناتجة عن مشكلة السياق الآمن هذه إلى عرض قيمة code
1، وهي "خطأ في الرفض بسبب عدم توفّر الإذن".
يمكن أن يظهر لك هذا الخطأ عندما يرفض أحد المستخدمين الوصول أو عندما يرفض النظام الوصول إلى
المواقع الجغرافية للمستخدم. وهذا يعني أنّه عليك الاطّلاع على الرسالة لمعرفة السبب الدقيق.
قد يكون هذا الإجراء غير مستقر لأنّه قد يتغيّر في المستقبل، ولكن من الإشارات القوية التي تدلّ على أنّ المشكلة كانت متعلّقة بمحتوى غير آمن هي البحث عن السلسلة "يُسمح فقط بمصادر آمنة".
navigator.geolocation.getCurrentPosition(success => {
/* Do some magic. */
}, failure => {
if (failure.message.startsWith("Only secure origins are allowed")) {
// Secure Origin issue.
}
});
تذكَّر أنّه لا يمكنك التحقّق من مصدر الصفحة فقط لأنّ صفحتك قد تكون على https ولكن داخل إطار iframe مستضاف من سياق غير آمن.
أحتاج حقًا إلى استخدام الموقع الجغرافي. ماذا عليّ أن أفعل؟
إذا كنت تريد استخدام واجهة برمجة التطبيقات HTML5 Geolocation API أو إذا كان موقعك الإلكتروني يستخدم واجهة برمجة التطبيقات Geolocation API، يُرجى نقل الصفحات التي تطلب بيانات من واجهة برمجة التطبيقات Geolocation API إلى HTTPS، مع التأكّد من استخدامها في سياق آمن.
هناك عدد من الخيارات الاحتياطية المتاحة للحصول على الموقع الجغرافي للمستخدم والتي لا تتأثر بهذا التغيير، مثل Google Maps Geolocation API و GeoIP (على سبيل المثال، تتوفّر حلول أخرى مستندة إلى الموقع الجغرافي) والرقم البريدي الذي يُدخله المستخدم. ومع ذلك، ننصح بشدة بأنّ أفضل مسار لضمان الوصول المستمر إلى الموقع الجغرافي هو الانتقال إلى HTTPS.