首页 > 解决方案 > 在 HttpClient 的多个重定向中传递授权标头

问题描述

我正在向服务器发送一个获取请求,服务器正在重定向到 4 进一步调用,然后返回响应。HttpClient 给出了异常,没有提供授权令牌。

你能告诉我,如何在多个重定向上传递相同的授权令牌?如果我设置“AllowAutoRedirect=false”并返回 RanToComplation 状态,它工作正常。这是我的方法:

static async Task CallWebAPIAsync()
        {

            WebRequestHandler webRequestHandler = new WebRequestHandler();
            webRequestHandler.UseDefaultCredentials = true;
             webRequestHandler.AllowPipelining = true;
            webRequestHandler.AllowAutoRedirect = true;

            using (var client = new HttpClient(webRequestHandler))
            {
                client.BaseAddress = new Uri("https://apirequest");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", token);
                client.Timeout = TimeSpan.FromSeconds(30000);
                //GET Method  
                var response = await client.GetAsync("user").ConfigureAwait(false); 
                if (response.IsSuccessStatusCode)
                {
                    var responseresult = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("Id:{0}\tName:{1}", responseresult);
                }
                else
                {
                    Console.WriteLine("Internal server Error");
                }

            }

标签: c#httpclientsystem.net.httpwebrequest.net-4.7

解决方案


我认为问题可能与此有关

必须在重定向时剥离授权标头。我目前正在尝试弄清楚如何解决它。


推荐阅读