Geolocation API 在 Chrome 50 中已从不安全来源中移除 | 博客
文章目录
Chrome 已明确表示,不再支持在非安全来源(如 HTTP)上使用 Geolocation HTTPS 提供服务的网站有直接影响,但从用户隐私和网络安全的角度来看,这一调整对整个互联网生态系统是有益的。本文将帮助您理解这一变更的原因及应对方法。
变更的生效时间
此变更自 Chrome 50 起正式生效,具体时间为 2016年4月20日中午12点(太平洋标准时间)。事实上,自 Chrome 44(2015年7月21日发布)起,开发者工具控制台就已开始提示相关警告。
此外,以下来源也曾对这一变更进行强调:
- Mobiforge(2016年1月26日)
- Wired(2016年3月17日)
- VentureBeat(2016年4月13日)
为什么要进行这一变更?
地理位置属于敏感数据,必须通过 HTTPS 来保护用户的隐私。如果允许从非安全来源获取用户位置数据,攻击者可能会轻易获取用户的位置信息,从而对用户隐私造成严重威胁。因此,强制要求 HTTPS 是为了提升用户数据的安全性。
受影响的用户和场景
以下场景将受到此变更的影响:
- 通过 HTTP 提供服务的页面:如果这些页面使用 Geolocation API,将无法再正常工作。
- 嵌入 HTTPS iframe 的 HTTP 页面:即使 iframe 使用 HTTPS 提供服务,但由于其嵌入在 HTTP 页面中,Geolocation API 依然无法使用。
需要注意的是,您无法通过共享的 HTTPS iframe 来实现功能的补充(polyfill)。
是否需要将整个应用迁移到 HTTPS?
我们强烈建议您将整个网络应用迁移到 HTTPS。随着浏览器功能的不断发展,许多强大的新功能(包括现有功能)都需要在安全来源(HTTPS)下运行。
localhost 是否受影响?
不受影响。根据规范,localhost 被视为“潜在安全来源”。因此,通过 localhost 提供的顶层地理定位请求仍然是有效的。
如何检测地理定位是否因不安全上下文被阻止?
可以通过 Geolocation API 的失败回调来检测。地理位置规范定义了一个 PositionError 对象,该对象包含以下属性:
- 代码(code):当因安全上下文问题导致错误时,返回值为
1,即“权限被拒绝错误”。 - 消息(message):提供具体的错误原因。
如果错误消息中包含“只允许安全的来源”字样,则可以确定问题是由不安全的内容引起的。
需要注意的是,仅检查页面的来源并不足够,因为页面可能运行在 HTTPS 上,但嵌套在由 HTTP 托管的 iframe 内。
如果必须使用 Geolocation API,该怎么办?
如果您的应用程序确实需要使用 Geolocation API,请务必迁移到 HTTPS。通过 HTTPS 提供服务不仅能解决此问题,还能提升用户的隐私保护和数据安全性。
总结
Chrome 强制要求 Geolocation API 在 HTTPS 下运行,是为了保护用户隐私并提升网络安全性。对于开发者来说,尽早将应用迁移到 HTTPS 是应对这一变更的最佳方式。通过遵循这一安全实践,您不仅能够继续使用 Geolocation API,还能为用户提供更安全的服务体验。
原文链接: https://developer.chrome.com/blog/geolocation-on-secure-contexts-only
最新文章
- Tesults博客:API自动化测试指南
- 介绍全新的Rust REST API客户端库
- DeepSeek R1 × 飞书多维表格赋能教育领域
- 深入解析什么是API安全
- 使用 C++ 和 Win32 API 创建 GUI 窗口应用程序:从零构建 Windows 桌面界面
- 一个平台对接所有API:企业级API集成解决方案
- 台湾可以用支付宝吗?:支付与收款指南
- 深入解读 API Gateway:设计原则、实践与最佳架构
- 什么是 LangSmith
- 为API网关构建ChatGPT自定义插件 – API7.ai
- 更快的API,更高效的开发者:API Gateway自定义授权器
- 如何使用 node.js 和 express 创建 rest api