当前位置: 首页 > 知识库问答 >
问题:

HTTP 401未经授权时不使用HTTP基本Auth?

张心水
2023-03-14

当构建一个不使用HTTP基本身份验证(但是像api-key这样的其他东西)并且客户机提供无效凭据的REST API时,您应该返回什么HTTP状态代码?401未经授权还是403禁止?

IANA HTTP状态代码注册表将RFC7235第3.1节列为“401未经授权”的责任人,其中指出:

HTTP 401响应必须始终包含一个WWW-Authenticate标头,该标头指示客户端如何进行身份验证。HTTP 403响应不包括www-authenticate标头。

将使用的响应类型取决于身份验证方案。

而理查森似乎不同意:

401(“未经授权”)
重要性:高。
客户端试图在未提供正确身份验证凭据的情况下对受保护的资源进行操作。它可能提供了错误的凭据,或者根本没有。凭据可以是用户名和密码、API密钥或身份验证令牌--无论有问题的服务期望什么。对于客户机来说,请求URI并接受401是很常见的,这样它就知道要发送什么样的凭据以及以什么样的格式发送凭据。[...]

共有1个答案

施晗日
2023-03-14

您假设www-authenticate值需要是basic值。您可以返回一个不同的值,如“api-key”,作为需要执行的auth类型。因此,可以使用其他值返回401和www-authenticate header。您甚至可以返回具有不同值的多个标头,指示应用程序支持的不同类型的身份验证。

 类似资料:
  • 我想在客户端和节点上使用JQuery设置一个基本的HTTP身份验证。服务器端的js。我已在服务器端发出以下Ajax请求以设置头: 我希望使用基本身份验证模块在服务器端使用: 但是,这样做,我会遇到一些问题: 我看不到在飞行前选项HTTP请求中设置了标头: 选项/服务器HTTP/1.1 主机:服务器。com 连接:保持活动状态 访问控制请求方法:获取 来源:null 用户代理:Mozilla/5.0

  • 问题内容: 我从Nexus存储库中检出了代码。我更改了帐户密码,并在文件中正确设置了密码。在执行时,我收到错误消息,说明它尝试从该存储库下载文件。 任何想法如何解决此错误?我在Maven 3.04中使用Windows 7 问题答案: 这里的问题是所使用的密码出现错字错误,由于密码中使用了字符/字母,因此很难识别。

  • 我正在尝试使用基本身份验证获取url。我设置用户/密码如下所示。同样的凭证在邮递员中工作。 我认为凭据设置不正确。这里怎么了?错误:

  • 当我想使用YouTube数据API上传视频时,它抛出了EXEPOPTION 401,但是我的凭据的范围是 我已经在Google Developer Console中启用了API。我怎么才能解决这个问题,我很困惑。 2020-06-18 17:28:18.007信息26088---[主]c.google。应用程序编程接口。客户http。HttpTransport: --------------请求-

  • 我正在尝试使用Reddit API(https://github.com/reddit-archive/reddit/wiki/OAuth2)在我的ASP。NET Core MVC应用程序,为了获得令牌,我必须使用HTTP基本授权(用户名和密码是客户端id和密码)对URI进行POST。目前我使用的代码是: 然而,这并没有使用授权。如何添加授权?我试图查看< code>HttpClient的文档。P