从 Chrome 50 开始,Google 已经取消了 Chrome 进行地理位置查找的功能,除非页面托管在安全的来源上。
参见 https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features
我正在构建一个将嵌入到我无法控制的网站上的小部件,并且我的小部件具有一些地理定位功能。如果用户使用的是 Chrome 且来源不安全,我想在我的小部件中隐藏与地理位置相关的 UI。
如何检测不安全的来源?
更新
我最初的想法是做这样的事情:
const geolocationPermitted = () => {
return (!window.chrome) || window.location.protocol == 'https:';
}
但是在本地开发时这个测试失败了,因为我通过普通 http
从本地主机提供站点。 Chrome 认为这是安全的,并且上面的函数返回 false。
最佳答案
我发现 Chrome 和 Firefox 确实将其公开为一个属性:
https://developer.mozilla.org/en-US/docs/Web/API/Window/isSecureContext
The
window.isSecureContext
read-only property indicates whether a context is capable of using features that require secure contexts.
我目前的测试是:
browserHasLocation = () => {
return navigator.geolocation && (!window.chrome || window.isSecureContext);
}
关于javascript - 如何检测 Chrome 是否认为当前页面是安全来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40679961/