重定向期间在 RestSharp 中保留授权标头

And*_*sne 4 c# api unauthorized restsharp

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

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

如何配置 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);
Run Code Online (Sandbox Code Playgroud)

And*_*sne 5

我添加了一个检查,使用以下代码重新发送接收 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);
}
Run Code Online (Sandbox Code Playgroud)