小编Shi*_*jan的帖子

C#:即使使用 httpclient 发送 CSRF 令牌后也会收到 403

我正在尝试从我的 UWP 应用程序将有效负载发布到我们的后端系统。为此,我首先执行 GET 来获取 CSRF 令牌,然后将其添加到 POST 请求的标头中。发帖时,我仍然收到 403 Forbidden 错误。

我正在与“Insomnia”REST 客户端进行交叉测试,方法是执行单独的 GET 和 POST 请求,并将从 GET 获取的 CSRF 令牌提供给 POST 标头,并且工作正常。

获取令牌:

public async Task<string> GetCSRF()
{
    using (HttpClient httpClient = new HttpClient())
    {
        httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(
            System.Text.Encoding.ASCII.GetBytes(
                    string.Format("{0}:{1}", userName.Text.ToUpper(), SAPpassword.Password))));

        httpClient.DefaultRequestHeaders.Add("X-CSRF-TOKEN", "fetch");
        HttpResponseMessage response = await httpClient.GetAsync(new Uri(_URI));
        response.EnsureSuccessStatusCode();
        if (response.Content == null)
            return null;
        String csrfToken = response.Headers.GetValues("X-CSRF-TOKEN").FirstOrDefault();
        return csrfToken;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到了带有 csrf 令牌的以下标头:

public async Task<string> GetCSRF()
{
    using (HttpClient httpClient …
Run Code Online (Sandbox Code Playgroud)

c# csrf dotnet-httpclient

4
推荐指数
1
解决办法
7211
查看次数

标签 统计

c# ×1

csrf ×1

dotnet-httpclient ×1