【问题标题】:Browsers send Authorization header only for constrained pages- How does it know?浏览器仅为受限页面发送授权标头-它怎么知道?
【发布时间】:2014-07-13 10:20:35
【问题描述】:

我有一个示例应用程序,其中很少有页面具有安全约束。 (共 5 页。保护 2 页)

我正在看 Fiddler 中的请求/响应集,很惊讶!

即使在 BASIC 授权完成后,浏览器也只会为我的受限页面发送 Authorization 标头。 浏览器如何知道应用程序中的哪些页面受到限制?

我想知道浏览器是否会执行以下操作之一:

  1. 浏览器是否在每次 GET 之前执行 HEAD 请求?如果导航到的页面受到限制,它是这样发现的吗?
  2. 浏览器是否假定 url 模式类似于“与导致 401 的 url 位于同一文件夹中的所有页面”?

【问题讨论】:

  • 检查 Firefox Firebug 插件或任何其他插件中的请求。
  • 我正在使用 Fiddler 检查 http 请求。我正在使用 Chrome 和 IE11 浏览并在 Fiddler 中看到原始请求/响应。使用 Firebug 会更好吗?
  • 据我所知,如果我从 http 页面访问 https 页面,则会添加一个额外的 cookie path=/;secure
  • 我现在没有使用 https,因为它是一个测试应用程序。因此,所有页面都在 http 上。

标签: java jsp http servlets basic-authentication


【解决方案1】:

恕我直言,它无法知道。但它可以缓存服务器在上次访问时请求身份验证的事实。要控制它,您应该:

  • 清除浏览器中的所有内容(cookies、历史记录、缓存)
  • 停止并重新启动(以确保您从 干净 浏览器开始)
  • 然后检查请求和响应

您应该在第一次看到每个安全页面的两个连续请求,第一次收到 401 未授权响应,第二次携带身份验证标头。并且在同一页面上的后续请求时,浏览器会记住该页面需要身份验证并直接发送标头,而不会将它们发送给其他页面。

所以它不会猜测,而只会记住哪些页面需要身份验证标头。

【讨论】:

  • 我确实尝试使用新浏览器来防止缓存。无论如何,我会再检查一次。即使使用上述方法,这也意味着浏览器至少尝试一次没有授权标头的所有安全链接并获得 401,然后记住从下一次开始发送标头。为什么浏览器要为每个链接尝试不使用该标题一次?如此多的安全链接至少会返回 401 一次。我们缺少什么吗?
猜你喜欢
  • 2019-07-03
  • 1970-01-01
  • 2019-02-03
  • 2016-06-19
  • 2022-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
相关资源
最近更新 更多