检查页面是否通过 https 安全提供

check if page is served securely over https

我正在创建一个 chrome 扩展,向网站公开额外的 API。在网站可以使用这些 API 之前,如果网站是通过 HTTP 而不是 HTTPS 提供服务,我想显示一个警告。这是因为这些 API 减少了网络沙箱,如果未验证来自网站的 JavaScript 源来自正确的一方,则可能会更加危险。

是否有可靠的方法可以用来检查网站是否通过 HTTPS 提供服务?
也许 chrome 扩展 API(例如在内容脚本中)?

如果证书出现问题,检查 location.protocol 似乎可能不准确:How do I determine whether a page is secure via JavaScript?

对于较新的浏览器:

window.isSecureContext

您还可以:

window.location.protocol == 'https:'

但是,如果网页协议是 https 但证书无效并且网页继续在非安全上下文中加载,这可能是错误的。