2

当我使用 fiddler 来诊断我的 mvc Web 应用程序时,我注意到对资源的​​多次调用返回 401 未经授权的错误,然后继续。

    Result Protocol URL                      Body  Caching Content-Type
1   401    HTTP     /administration/index    6,334 private text/html; charset=utf-8
2   401    HTTP     /administration/index    341           text/html; charset=us-ascii
3   200    HTTP     /administration/index    511   private text/html; charset=utf-8
... images and stylesheets also return the same sequence
    401    HTTP     /administration/logo.png 6,322         text/html; charset=utf-8
    401    HTTP     /administration/logo.png 341           text/html; charset=us-ascii
    200    HTTP     /administration/logo.png 3,124         image/png

我正在访问的页面和图像都会发生这种情况。

该网站在其自己的应用程序池下运行 ApplicationPoolIdentity 并且网站上有 Windows 身份验证。

看起来资源正在为不同的字符集多次调用?

任何人都可以建议可能导致这种情况发生的原因吗?

4

1 回答 1

2

当我使用 fiddler 来诊断我的 mvc Web 应用程序时,我注意到对资源的​​多次调用返回 401 未经授权的错误,然后继续。

如果您使用的是Integrated Windows Authentication. Windows 身份验证 (aka) NTLM 是一种质询响应身份验证方案,其中客户端向受保护资源发送请求,服务器返回 401 和质询。然后,客户端使用此质询生成一个授权标头,证明该用户是他所呈现的用户,而无需发送密码。双方都使用域控制器作为中介。

如果您查看响应标头,您应该会看到以下内容:

HTTP/1.1 401 Access Denied
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM 

然后客户端再次尝试进行身份验证:

GET / HTTP/1.1
Host: host
Authorization: NTLM TlRMTVNTUAABAAAAB4IAoAAAAAAAAAAAAAAAAAAAAAB= 

现在服务器向客户端发送挑战:

HTTP/1.1 401 Access Denied
WWW-Authenticate: NTLM TlRMTVNTUAACAAAADAAMADAAAAAFgoGgCY6qiih5j bAAAAAAAAAAAH4AfgA8AAAAUABPAFIAVAA4ADAAAgAMAFAATwBSAFQA OAAwAAEACgBKAEwASQBNAEEABAAkAHAAbwByAHQAOAAwAHMAbwBmA HQAdwBhAHIAZQAuAGMAbwBtAAMAMABqAGwAaQBtAGEALgBwAG8AcgB0 ADgAMABzAG8AZgB0AHcAYQByAGUALgBjAG8AbQAAAAAA 

最后客户回应了这个挑战:

GET / HTTP/1.1
Host: host
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAGIAAAAYABgAegAAAAwADAB AAAAACgAKAEwAAAAMAAwAVgAAAAAAAACSAAAABYKAoFAATwBSAFQAO AAwAGoAbABpAG0AYQBFAFIATgBFAFMAVACZTd1Br98zFkTowoPysC5ysMaXqb qycwRldOKyZJbCIZLxCfcZe3ZHiYQmG97jr89= 
于 2013-07-10T13:02:28.440 回答