Chrome มีเจตนารมณ์สาธารณะที่จะเลิกใช้คุณลักษณะที่มีประสิทธิภาพ เช่น ตำแหน่งทางภูมิศาสตร์ในต้นทางที่ไม่ปลอดภัย และเราหวังว่าผู้อื่นจะปฏิบัติตาม
ตั้งแต่ Chrome 50 เป็นต้นไป Chrome จะไม่รองรับการรับตำแหน่งของผู้ใช้โดยใช้ HTML5 Geolocation API จากหน้าเว็บที่แสดงโดยการเชื่อมต่อที่ไม่ปลอดภัยอีกต่อไป ซึ่งหมายความว่าหน้าที่เรียก Geolocation API ต้องแสดงจากบริบทที่ปลอดภัย เช่น HTTPS
นี่เป็นเรื่องสำคัญเพราะจะส่งผลโดยตรงต่อทุกไซต์ที่ต้องใช้ API ตำแหน่งทางภูมิศาสตร์และไม่ได้ให้บริการผ่าน https แต่เป็นการเปลี่ยนแปลงที่เราเชื่อว่า จะเป็นประโยชน์กับผู้ใช้ทุกคนบนเว็บ โพสต์นี้น่าจะช่วยให้คุณเข้าใจ เหตุผลและวิธีดำเนินการต่อ
การเปลี่ยนแปลงนี้จะเกิดขึ้นเมื่อใด
การเปลี่ยนแปลงนี้มีผลตั้งแต่ Chrome 50 (12.00 น. PST 20 เมษายน 2016)
คอนโซลเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Chrome มีคำเตือนมาตั้งแต่เวอร์ชัน 44 (เผยแพร่เมื่อ 21 กรกฎาคม 2015)
มีประกาศสาธารณะจำนวนมากที่อธิบายเหตุผล (และการอภิปราย) ถึงสาเหตุที่เราทำการเปลี่ยนแปลงนี้:
- ตั้งใจที่จะเลิกใช้งานชุดฟีเจอร์ที่มีประสิทธิภาพผ่าน HTTP (กุมภาพันธ์ 2015)
- ตั้งใจที่จะเลิกใช้งาน Geolocation API ผ่าน HTTP (พฤศจิกายน 2015)
- Chrome Dev Summit (พ.ย. 2016)
- บล็อกการเปิดตัว Chrome Beta Channel (17 มีนาคม 2016)
- เว็บไซต์สถานะของ Chrome
มีแหล่งข้อมูลอื่นๆ จำนวนหนึ่งที่เน้นย้ำเรื่องนี้ ได้แก่ Mobiforge (26 ม.ค. 2016), Wired (17 มีนาคม 2016), VentureBeat (13 เมษายน 2016)
เพราะเหตุใดเราจึงทำการเปลี่ยนแปลงนี้
ตำแหน่งเป็นข้อมูลที่ละเอียดอ่อน การใช้ HTTPS เป็นสิ่งจำเป็น เพื่อปกป้องความเป็นส่วนตัวของข้อมูลตำแหน่งของผู้ใช้ หากตำแหน่งของผู้ใช้อยู่ในบริบทที่ไม่ปลอดภัย ผู้โจมตีในเครือข่ายจะรู้ได้ว่าผู้ใช้อยู่ที่ไหน ซึ่งถือเป็นการละเมิดความเป็นส่วนตัวของผู้ใช้อย่างมาก
ใครจะได้รับผลกระทบบ้าง
ซึ่งจะส่งผลต่อหน้าที่ใช้ Geolocation API จากหน้าเว็บที่แสดงผ่าน HTTP (ไม่ปลอดภัย) และยังส่งผลต่อ HTTPS iframe ที่ใช้ Geolocation API หากฝังอยู่ในหน้า HTTP (คุณจะไม่สามารถทำ Polyfill โดยใช้เฟรมที่แสดง HTTPS ที่แชร์)
เว็บแอปทั้งแอปต้องใช้ HTTPS ไหม
ทั้งแอปไม่ได้กำหนดให้แสดงผ่าน HTTPS เพื่อใช้ตำแหน่งทางภูมิศาสตร์ เฉพาะหน้าที่ใช้ตำแหน่งทางภูมิศาสตร์เท่านั้นที่จะสามารถแสดงผ่านบริบทที่ปลอดภัย ปัจจุบันบริบทที่ปลอดภัยคือทุกสิ่งที่โฮสต์ระดับบนสุดบน HTTPS หรือ localhost เช่น iframe ที่ชี้ไปยังต้นทางที่ปลอดภัยแต่โฮสต์ในต้นทางที่ไม่ปลอดภัย (http ://paul.kinlan.me/) จะไม่ได้รับอนุญาตให้เรียกใช้ API ตำแหน่งทางภูมิศาสตร์
เราขอแนะนำอย่างยิ่งให้เปลี่ยนไปใช้ HTTPS เป็นฟีเจอร์เบราว์เซอร์ทั้งเก่าและใหม่ที่มีประสิทธิภาพต้องมีต้นทางที่ปลอดภัย
การเปลี่ยนแปลงนี้ส่งผลต่อการพัฒนาในท้องถิ่นไหม
ไม่ควรเป็นเช่นนั้น เนื่องจาก localhost จะได้รับการประกาศว่า "น่าจะปลอดภัย" ตามข้อกำหนดนั้น และในกรณีของเรา คำขอตำแหน่งทางภูมิศาสตร์ที่แสดงที่ระดับบนสุดเหนือ localhost จะยังคงใช้งานได้
ฉันจะตรวจพบระหว่างรันไทม์ได้ไหมว่าตำแหน่งทางภูมิศาสตร์ถูกบล็อกเนื่องจากไม่ได้อยู่ในบริบทที่ปลอดภัย
ได้ ข้อกำหนดตำแหน่งทางภูมิศาสตร์กำหนดออบเจ็กต์ PositionError
ที่ส่งผ่านไปยังการเรียกกลับที่ล้มเหลวของ API ตำแหน่งทางภูมิศาสตร์ ออบเจ็กต์จะกำหนดพร็อพเพอร์ตี้ 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