当使用 HTTP 身份验证托管网站时,如果客户端未通过身份验证,服务器将发送 401 未授权响应,包括 WWW-Authenticate header .此 header 中的可选指令是 realm
:
A string describing a protected area. A realm allows a server to partition up the areas it protects (if supported by a scheme that allows such partitioning), and informs users about which paricular username/password are required.
(强调我的)
假设 www.example.com
需要授权并配置了 Test Area
的领域值。过去,大多数 Web 浏览器在收到此类响应时会显示一个登录对话框,并说出类似“需要授权。www.example.com 的站点显示'测试区域'。”
但是(至少是最新版本的)Chrome、Firefox 和 Edge 现在都只显示一条通用消息,不包括领域值。有趣的是,IE 仍然显示领域值(下面的屏幕截图,所有 Windows 10 64 位):
Chrome (v93.0.4577.82)
火狐 (v92.0)
边缘 (v93.0.961.52)
IE (v11.1411.18362.0)
我很确定 Firefox 和 Edge 曾经显示过它。 Chrome 可能有一段时间了,但似乎是第一个停止的。由于所有现代浏览器都没有显示它,我认为有一些原因......?我在整个互联网上搜索过,但无法弄清楚。我有一个用例,在该用例中,显示领域会对用户有所帮助,因为这样可以更清楚地说明他们需要使用哪些特定凭据。我知道您不能强制浏览器显示它,但这很烦人。但是,如果有正当理由不显示它,我会接受。
最佳答案
原因是,通过将一些误导性信息放入该领域,这可能会被滥用于网络钓鱼攻击。 http 身份验证的登录对话框是受信任的浏览器 UI 的一部分,让服务器有机会修改该 UI - 即使只是显示文本 - 也是一种安全风险。
关于http - 为什么现代 Web 浏览器不再显示用于 HTTP 身份验证的 "realm"值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69303610/