2017-04-25 74 views
0

我正在向請求NTLM認證的服務器發送GET請求。使用HttpClient設置CachePolicy後未經授權的響應

爲此,我們設置UseDefaultCredentials = true

var defaultHandler = new WebRequestHandler 
{ 
    UseDefaultCredentials = true, 
    CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore), 
    AutomaticDecompression = DecompressionMethods.GZip, 
    AllowAutoRedirect = true, 
    UseCookies = true, 
    CookieContainer = new CookieContainer() 
}; 

一切都正常工作,直到我們決定打開緩存

爲此,我們改變了我們的CachePolicyCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default)

與該改變的服務器開始與401 - unauthorized迴應並正在發送旁邊的WWW-Authenticate: NTLM

任何想法,爲什麼設置緩存改變行爲?

回答

0

問題的根本原因是,服務器用

Cache-Control: private

我們HttpClient被緩存該響應,因此,下面的協商步驟正從Cache服務,而不是被請求的響應服務器導致驗證失敗。

我們在401響應中禁用了緩存。 大量閱讀後,我們決定採用它作爲Mozilla Developer Network狀態

Cache-Control: no-cache, no-store, must-revalidate

相關問題