当前位置:  开发笔记 > 编程语言 > 正文

HTTP基本身份验证 - 预期的浏览器体验是什么?

如何解决《HTTP基本身份验证-预期的浏览器体验是什么?》经验,为你挑选了6个好方法。

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

我通常只使用curl执行此操作:

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

它工作得很好.但是,现在我无法访问curl(长篇故事),如果可能的话,我想从Web浏览器中进行操作.

我认为Basic Auth应该工作的方式是 - 我输入我想要的网址,服务器然后决定我没有被授权,返回响应代码401,我输入我的用户名和密码到提示符.如果它是正确的,页面加载!

但是,在somesite.com上,我根本没有获得授权提示,只是一个页面上写着我没有被授权.有些网站没有正确实现Basic Auth工作流程,还是我还需要做其他事情?



1> Nicocube..:

为了帮助每个人避免混淆,我将分两部分重新提出问题.

首先:"如何使用BASIC auth在浏览器中进行经过身份验证的HTTP请求?" .

在浏览器中,您可以通过等待提示来进行http基本身份验证,或者如果您遵循以下格式则通过编辑URL: http://myusername:mypassword@somesite.com

注意:如果你安装了命令行和curl,问题中提到的curl命令就完全没问题了.;)

参考文献:

https://en.wikipedia.org/wiki/Basic_access_authentication#URL_encoding

https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax

https://tools.ietf.org/html/rfc3986#page-18

另外根据CURL手册页https://curl.haxx.se/docs/manual.html

HTTP

  Curl also supports user and password in HTTP URLs, thus you can pick a file
  like:

      curl http://name:passwd@machine.domain/full/path/to/file

  or specify user and password separately like in

      curl -u name:passwd http://machine.domain/full/path/to/file

  HTTP offers many different methods of authentication and curl supports
  several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which
  method to use, curl defaults to Basic. You can also ask curl to pick the
  most secure ones out of the ones that the server accepts for the given URL,
  by using --anyauth.

  NOTE! According to the URL specification, HTTP URLs can not contain a user
  and password, so that style will not work when using curl via a proxy, even
  though curl allows it at other times. When using a proxy, you _must_ use
  the -u style for user and password.

第二个真正的问题是"但是,在somesite.com上,我根本没有获得授权提示,只是一个页面说明我没有被授权.有些网站没有正确实现Basic Auth工作流程,或者有什么东西否则我需要做什么?"

curl文档说该-u选项支持许多身份验证方法,Basic是默认方法.


您可能没有完全阅读这个问题,正如它在curl命令下所说:"但是,现在我无法访问curl(长篇故事),我想从Web浏览器中做到这一点,如果可能的话".;)
提问者想知道为什么认证.没有在浏览器中工作.问题不在于cURL.
问题是关于curl的问题,它不是浏览器。
我完全同意curl工作正常,我个人经常使用它,但问题不在于卷曲......

2> daronwolff..:

你有没有尝试过 ?

curl somesite.com --user username:password


阅读问题... OP无法访问卷曲
@daronwolff你只是切换了参数位置并用-user替换了-u(这只是长期的),但除此之外你还写了OP在他的问题中写的确切内容
提问者想知道为什么认证.没有在浏览器中工作.问题不在于cURL.

3> AUSteve..:

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

如果您使用IE并且somesite.com位于您的Intranet安全区域中,则IE可能会自动发送您的Windows凭据.



4> Chris McCaul..:

WWW-Authenticate标头

如果服务器正在发送401响应代码但没有正确设置WWW-Authenticate标头,你也可以得到这个 - 我应该知道,我刚刚修改了自己的代码,因为VB应用程序没有弹出身份验证提示.



5> 小智..:

如果请求标头中没有提供凭据,则以下是IE提示用户输入凭据并重新提交请求所需的最小响应.

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



6> Mgccon..:

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

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有