我的代碼正在對需要基本身份驗證的Web服務URL進行HTTP GET。C#HttpClient重定向後未發送基本身份驗證
我已經使用HttpClient
與HttpClientHandler
實現了此功能,該功能定義了Credentials
屬性。
這一切都完美..除了我的使用情況之一,我正在進行身份驗證GET: http://somedomain.com
重定向到http://www.somedomain.com
。
看來,HttpClientHandler在重定向期間清除了認證頭。我怎樣才能防止這一點?無論重定向如何,我都希望發送憑據。
這是我的代碼:
// prepare the request
var request = new HttpRequestMessage(method, url);
using (var handler = new HttpClientHandler { Credentials = new NetworkCredential(username, password) , PreAuthenticate = true })
using (var client = new HttpClient(handler))
{
// send the request
var response = await client.SendAsync(request);
注:這是一個相關的問題: Keeping HTTP Basic Authentification alive while being redirected 但自從我使用不同類發出請求,有可能是一個更好的,更具體的解決方案
附註,我認爲設計的行爲在這種情況下是沒有意義的。我將憑據設置爲客戶端的一部分,而不是根據特定的URI(請求)。由於同一個客戶端可以執行多個請求,並且授權將被髮送,而不管他們的URI如何,所以這非常愚蠢 – talkol