【问题标题】:Retaining authorization header in RestSharp during redirects在重定向期间在 RestSharp 中保留授权标头
【发布时间】:2018-11-19 12:03:18
【问题描述】:

我正在使用 RestSharp 进行 GET api 调用。 api 调用通过 HTTP Basic 身份验证通过授权标头进行身份验证。

服务器使用状态码 307 重定向 api 调用。我的客户端代码确实处理了重定向,但授权标头未传递给此重定向的 api 调用。这样做是出于here 中提到的正当理由。因此,我确实收到了未经授权的错误。

如何配置 RestClient 来恢复授权标头?

var client = new RestClient("https://serverurl.com");
var request = new RestRequest(Method.GET);

request.AddHeader("Authorization", "Basic Z3JvdXAxOlByb2otMzI1");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Tenant-Id", "4892");

IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

【问题讨论】:

    标签: c# api restsharp unauthorized


    【解决方案1】:

    我添加了一个检查,使用以下代码重新发送接收 401 的 api 请求。

    var client = new RestClient("https://serverurl.com");
    var request = new RestRequest(Method.GET);
    
    request.AddHeader("Authorization", "Basic Z3JvdXAxOlByb2otMzI1");
    request.AddHeader("Content-Type", "application/json");
    request.AddHeader("Tenant-Id", "4892");
    
    IRestResponse response = client.Execute(request);
    
    //Resend the request if we get 401
    int numericStatusCode = (int)response.StatusCode;
    if(numericStatusCode == 401) {
        var redirectedClient = new RestClient(response.ResponseUri.ToString());
        IRestResponse newResponse = redirectedClient.Execute(request);
        Console.WriteLine(newResponse.ResponseStatus);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多