当服务器允许通过基本HTTP身份验证访问时,在web浏览器中期望的体验是什么?

暂时忽略web浏览器,下面是如何使用curl创建一个Basic Auth请求:

curl -u myusername:mypassword http://somesite.example

但是在Web浏览器中呢?我在一些网站上看到的是,我访问URL,然后服务器返回响应代码401。然后浏览器显示用户名/密码提示。

然而,在某些网站上。例如,我根本没有得到授权提示,只有一个页面说我没有获得授权。是否有些站点没有正确地实现基本认证工作流,或者还有其他需要做的事情?


当前回答

你试过吗?

curl somesite.example --user username:password

其他回答

您的浏览器中可能缓存了旧的无效用户名/密码。试着清除它们并再次检查。

如果你使用IE和某些网站。例如,在您的Intranet安全区域,IE可能会自动发送您的Windows凭据。

WWW-Authenticate头

如果服务器发送了401响应码,但没有正确设置WWW-Authenticate报头,也可能会出现这种情况——我应该知道,我刚刚在自己的代码中修复了这个问题,因为VB应用程序没有弹出身份验证提示。

你可以使用邮差插件chrome。 它提供了为每个请求选择所需的身份验证类型的能力。 在该菜单中,您可以配置用户和密码。 Postman将自动将配置转换为与您的请求一起发送的身份验证头。

如果请求头中没有提供凭据,IE提示用户提供凭据并重新提交请求所需的最小响应如下。

Response.Clear();
Response.StatusCode = (Int32)HttpStatusCode.Unauthorized;
Response.AddHeader("WWW-Authenticate", "Basic");

你试过吗?

curl somesite.example --user username:password