google-chrome - 摘要式身份验证请求中的 HTTP 无授权字段
问题描述
我的 SOC 上有一个带有摘要式身份验证的 http 服务器。在尝试正确验证服务器时,发送带有 401 代码和 WWW-Authenticate 标头的响应,带有 nonce 和 Digest 模式。但是,在某些主机上,浏览器在它们应该包含的后续请求中不包含带有 nonce 等的授权字段。
这是 Edge 登录尝试:
使用 WWW-Authenticate - https://i.imgur.com/tcw1XYL.png响应。在上面的屏幕中,服务器返回的正确 WWW-Authenticate 字段。
未经授权的请求 - https://i.imgur.com/4z61rU5.png。我希望下一个请求中有授权字段,但没有!
Chrome 尝试类似,只是它立即显示 401 页面而没有登录提示,因为标题中没有授权字段。
Chrome 和 Edge 都是 Windows 10 上的最新 64 位版本。
哪些可能的问题会导致这种行为?
解决方案
显然问题是多行 WWW-Authenticate 标头。您可以在屏幕截图中看到标题字段值之间的“/r/n”分隔符(0x0d 0x0a 字节)。
这种多行在原始 RFC 2616 中被允许,然后被较新的 RFC 7230 弃用。有关详细信息和链接,请参阅https://stackoverflow.com/a/31324422/8876135。
通过使其成为单行来修复标题字段后,问题就消失了。我仍然不知道为什么完全相同的浏览器在某些主机上的标头存在此问题,但在我的工作/家用 PC 上却完全没问题。
推荐阅读
- javascript - 使用 React Native PanGestureHandler 从下到上移动框
- arrays - 使用矢量化方法而不是 FOR 循环创建多维移位数组
- typescript - 验证数字精度的“真实”浮点字段
- php - 在 Symfony 控制器上调用“addFlash”方法后在数据库中保存 flash 消息
- python-sphinx - 忽略 sphinx 项目 URL 路径中的文档文件夹
- python - 从 Panda 中的列中获取位于前 n% 的值的百分比,例如 25%、50% 等或低于 n%
- r - 基于 R 中最高温度的热波计算
- python - PySpark - 按行和列计数
- dart - 如何在没有可选参数的情况下覆盖子类中的方法?
- python - 没有登录的 Flask 会话(匿名会话)