HTTPS 基本身份验证凭据是否与其 HTTP 副本共享?

Are HTTPS basic auth credentials shared with its HTTP counterpart?

想象一下以下场景:

  1. 用户前往http://example.com
  2. 服务器使用临时重定向(状态 302)重定向到安全版本 https://example.com
  3. https://example.com 响应 HTTP 基本身份验证质询(状态 401)
  4. 用户成功提供username/password并获得访问权限(浏览器将这些凭据存储在其内部缓存中)

如果用户跟随 link 进入不安全版本的网站 (http://example.com) 会怎样?

凭据是否会因明文 HTTP 请求而暴露?

浏览器是否将 HTTP 凭据和 HTTPS 凭据存储在单独的“存储桶”中?

从技术上讲,这两个 URL 属于不同的来源,因此不应共享凭据。但是我在网上找不到任何证实。

Are HTTP credentials and HTTPS credentials stored in separate "buckets" by the browser?

是的,这些桶的正式名称是 'origins'。 HTML、Javacript、HTTP 和 URI 等规范谈论起源,但桶实际上是 URI 减去路径。

所以对于 https://example.org/foo/bar,原点是 https://example.org

所以这包括:

  • 方案 (http / https).
  • 域名
  • 港口

因此在您的示例中,2 个相关的来源/桶是 http://example.comhttps://example.com,它们是分开的。