javascript - 如何检测 Chrome 是否认为当前页面是安全来源?

标签 javascript google-chrome security geolocation cross-domain

从 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/

相关文章:

javascript - 这个函数中的 detail 是做什么的或意味着什么?

javascript - 我制作了一个简单的渐进式 Web 应用程序,但是当我离线运行时,缓存文件会被自动删除。我该如何解决这个问题?

javascript - 获取 id 然后选择该元素 - jQuery

javascript - $.mobile.changePage 在 Chrome 和 Safari 中不起作用

security - 关于 Hadoop 1.0.0 版本中的安全性

java - JRuby 中的安全级别

php - PHP安全性问题-SQL注入(inject),过滤和 session 安全性

javascript - 如何在给定 ID 的情况下引用 "title"?

jquery - 获取当前附加到 <input> 元素的文件列表

android - 在 Windows 上使用 Chrome for Android 中的远程调试功能的分步指南