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

如何在ASP.NET核心中使用HTTP基本授权发送HTTP POST?

督坚白
2023-03-14

我正在尝试使用Reddit API(https://github.com/reddit-archive/reddit/wiki/OAuth2)在我的ASP。NET Core MVC应用程序,为了获得令牌,我必须使用HTTP基本授权(用户名和密码是客户端id和密码)对URI进行POST。目前我使用的代码是:

public async Task<HttpResponseMessage> HttpPost(string uri, string value)
{
    HttpClient httpClient = new HttpClient();
    HttpResponseMessage httpResponseMessage = await httpClient.PostAsync(uri, new StringContent(value));
    return httpResponseMessage;
}

然而,这并没有使用授权。如何添加授权?我试图查看< code>HttpClient的文档。PostAsync和< code>HttpContent,但是我没有看到任何相关的内容。

共有1个答案

左丘宜年
2023-03-14

您需要创建一个格式为:username:密码的base 64编码字符串。然后将其添加到Http请求的授权标头中。

示例:

using (var client = new HttpClient { BaseAddress = new Uri("https://baseUrl") })
{
 var authString = Convert.ToBase64String(Encoding.UTF8.GetBytes("username:password"));

 client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", authString);
 var response = await client.PostAsync(requestUri, new StringContent(value));
}
 类似资料:
  • 也许我错过了它,但我正在试图弄清楚如何在ASP.NET核心中实现这一点。我查看了源代码(https://github.com/aspnet/security),但没有看到任何类似的内容。有没有新的方法来完成这一点?我需要创建一个控制器然后自己做吗? 我看到了如何通过中间件来设置OAuth身份验证,但这涉及到从API发出声明的授权部分。

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

  • 问题内容: 我在使用基本授权的PHP curl请求时遇到问题。 这是命令行curl: 我已经尝试通过以下方式设置curl标头,但无法正常工作 我收到响应“请求中的身份验证参数丢失或无效”,但我使用了在命令行curl中有效的ID和api_key(已测试) 请帮我。 问题答案: 试试下面的代码:

  • 当构建一个不使用HTTP基本身份验证(但是像api-key这样的其他东西)并且客户机提供无效凭据的REST API时,您应该返回什么HTTP状态代码?401未经授权还是403禁止? IANA HTTP状态代码注册表将RFC7235第3.1节列为“401未经授权”的责任人,其中指出: HTTP 401响应必须始终包含一个WWW-Authenticate标头,该标头指示客户端如何进行身份验证。HTTP

  • 我尝试通过在HTTP标头中发送凭据来对我的Spring应用程序进行身份验证(基本身份验证)。 我保护了,例如,资源 未经身份验证的用户被重定向到 现在,我向localhost:8080/app/home发送一个GET请求,其中包含HTTP标头中的编码凭据,如下所示: 我使用“高级Rest客户端”Chrome插件来发送请求,所以我非常确定标头已正确发送。但是服务器通过重定向到登录.jsp页面来回答。