授权 Header 未通过 HttpClient 请求发送
Authorization Header not sent through an HttpClient request
上下文
我想在 Xamarin 应用程序中使用 HtppClient 通过基本身份验证进行简单的 API 调用。
问题
我做了一段时间没有问题,但是几天后,它似乎不再起作用了。不管我是否检查以前的提交。这个请求确实适用于 Postman ofc,所以我确定它来自我的代码,而不是 API.
我尝试同时针对 .Net Standard 2.0 或 2.1,但无论我做什么,API 告诉我我缺少授权 header。我什至尝试在请求之前显示 myClient.DefaultRequestHeaders.Authorization
(授权存在且正确)并在请求之后显示 reponse.RequestMessage.Headers
(缺少授权,存在其他 header)。
代码示例
这是我对客户端的初始化:
HttpClient _clientNewApi = new HttpClient();
string authDataNewApi = string.Format("{0}:{1}", username, password);
string authHeaderValueNewApi = Convert.ToBase64String(Encoding.UTF8.GetBytes(authDataNewApi));
_clientNewApi.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValueNewApi);
_clientNewApi.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
这里是发出请求的代码:
Uri uri = new Uri(recieved_uri);
// _clientNewApi.DefaultRequestHeaders.Authorization is well set
HttpResponseMessage json_response = await _clientNewApi.GetAsync(uri);
// json_response.RequestMessage.Headers does not contain Authorization Header
// json_response.StatusCode is Unauthorized, and the message sent back by the API is "No authentication credentials provided."
我一直在拼命地查看我的代码并进行了数小时的结帐,但都无济于事,任何线索都非常感谢 :)
回复有点晚,但我的问题来自发送重定向代码 (3XX) 的 API。
邮递员什么也没说就进行了重定向,这就是我从未见过它的原因。
该代码也由 HttpClient 自动处理,但授权 Headers 未传输到重定向请求(我猜是出于安全原因)。我必须禁用自动重定向才能自己处理并将 Headers 传递给第二个请求。
上下文
我想在 Xamarin 应用程序中使用 HtppClient 通过基本身份验证进行简单的 API 调用。
问题
我做了一段时间没有问题,但是几天后,它似乎不再起作用了。不管我是否检查以前的提交。这个请求确实适用于 Postman ofc,所以我确定它来自我的代码,而不是 API.
我尝试同时针对 .Net Standard 2.0 或 2.1,但无论我做什么,API 告诉我我缺少授权 header。我什至尝试在请求之前显示 myClient.DefaultRequestHeaders.Authorization
(授权存在且正确)并在请求之后显示 reponse.RequestMessage.Headers
(缺少授权,存在其他 header)。
代码示例
这是我对客户端的初始化:
HttpClient _clientNewApi = new HttpClient();
string authDataNewApi = string.Format("{0}:{1}", username, password);
string authHeaderValueNewApi = Convert.ToBase64String(Encoding.UTF8.GetBytes(authDataNewApi));
_clientNewApi.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValueNewApi);
_clientNewApi.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
这里是发出请求的代码:
Uri uri = new Uri(recieved_uri);
// _clientNewApi.DefaultRequestHeaders.Authorization is well set
HttpResponseMessage json_response = await _clientNewApi.GetAsync(uri);
// json_response.RequestMessage.Headers does not contain Authorization Header
// json_response.StatusCode is Unauthorized, and the message sent back by the API is "No authentication credentials provided."
我一直在拼命地查看我的代码并进行了数小时的结帐,但都无济于事,任何线索都非常感谢 :)
回复有点晚,但我的问题来自发送重定向代码 (3XX) 的 API。
邮递员什么也没说就进行了重定向,这就是我从未见过它的原因。
该代码也由 HttpClient 自动处理,但授权 Headers 未传输到重定向请求(我猜是出于安全原因)。我必须禁用自动重定向才能自己处理并将 Headers 传递给第二个请求。