http:// user:pass@host.com身份验证如何工作?

bod*_*ydo 5 http http-authentication web

任何人都可以解释http:// user:pass@host.com身份验证的工作原理吗?浏览器是否Authorization使用user:passbase-64编码发送标头?

我在Chrome开发者工具中打开了Net控制台,当我提出请求时,http://user:pass@stackoverflow.com我没有看到Authorization添加标题.

我真的很好奇浏览器如何在user:pass@URL前面使用密码时发送密码.

Mar*_*tin 5

要检查标头,您需要针对需要身份验证的服务器进行测试。Authorization在服务器请求之前,客户端不会发送任何标头,因为客户端不知道服务器需要哪种身份验证方法(基本或摘要)。


HTTP 身份验证在两个请求中完成:

首先,发送没有任何Authorization标头的请求。然后服务器用一个WWW-Authenticate来响应,告诉客户端如何进行身份验证。这包括领域名称和身份验证方法(同样,这是基本或摘要)

然后客户端发送一个带有附加Authorization标头的新请求。在基本身份验证的情况下,此标头只是user:passbase64 编码,正如您所说:

Authorization: Basic dXNlcjpwYXNz
Run Code Online (Sandbox Code Playgroud)

现在密码在传输中可见,除非您使用 https。更好的选择是摘要式身份验证,其中两个的内容WWW-Authenticate,并Authorization最好由解释维基百科的文章。:)