2014-11-24 85 views
4

我使用NSURLSession dataTaskWithRequest:completionHandler:向我的服務器發出一些請求。我正在使用自簽名證書,所以當代理人URLSession:didReceiveChallenge:completionHandler:被調用時,我可以執行內部檢查以確認一切正常。NSURLSession didReceiveChallenge只調用一次

這對我發送的第一個請求非常有效。在我致電完成處理程序NSURLSessionAuthChallengeUseCredential後,然後下一個請求永遠不會調用URLSession:didReceiveChallenge:completionHandler:

由於我在這篇文章中不會涉及的原因,我很想每次都調用URLSession:didReceiveChallenge:completionHandler:,這樣我就可以自己進行檢查。我假設NSURLSession以某種方式緩存證書並將其保存在某種「有效證書」列表中,因此每次都不會執行此檢查。我想清除這個緩存,以便我可以每次都進行自己的檢查。如果我重新啓動應用程序,那麼URLSession:didReceiveChallenge:completionHandler:確實會再次被調用。

我試圖憑證存儲沒有成功設置爲nil:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; 
configuration.URLCredentialStorage = nil; 
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil]; 
[[session dataTaskWithRequest:request 
      completionHandler:^(NSData *data, 
           NSURLResponse *response, 
           NSError *error) { 

       ... 

      }] resume]; 

任何想法如何做到這一點?

謝謝!

+0

請參閱: http://stackoverflow.com/questions/27065372/why-is-a-https-nsurlsession-connection-only-challenged-once-per-domain – 2015-01-08 12:58:05

+0

非常感謝您的指點我這個!我已經放棄了希望! – Rob 2015-01-09 17:07:57

+0

@Rob你有這個問題嗎? – Ramis 2015-10-29 09:13:19

回答

0

對於在這裏嘗試了一切的人可能會在後端出現問題。所以這個問題是通過在nginx服務器中禁用ssl會話緩存來解決的。