我正在使用不同的p12证书对我的服务器进行两次调用。问题是,在第二次通话时,即使我为其分配了新证书,它也会使用第一次通话中的证书。
第一次呼叫(它下载我想用于第二次呼叫的第二个证书):
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request addRequestHeader:@"Content-Type" value:@"application/x-pkcs12"];
[request setValidatesSecureCertificate:YES];
[request setCachePolicy: ASIDoNotWriteToCacheCachePolicy | ASIDoNotReadFromCacheCachePolicy];
[request setClientCertificateIdentity:[self copyClientCertificate]];
[request setDownloadDestinationPath:thePath];
[request setDelegate:self];
[request setUseCookiePersistence:YES];
[request startAsynchronous];
[request setDidReceiveResponseHeadersSelector:@selector(didReceiveResponseHeaders:)];
[request setDidFinishSelector:@selector(ConnectFinished:)];
在第二个电话:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setValidatesSecureCertificate:YES];
[request setCachePolicy: ASIDoNotWriteToCacheCachePolicy | ASIDoNotReadFromCacheCachePolicy];
[request setClientCertificateIdentity:[self copyClientCertificate2]];
[request setCachePolicy:ASIDoNotReadFromCacheCachePolicy];
[request setDelegate:self];
[request setUseCookiePersistence:YES];
[request startAsynchronous];
[request setDidFinishSelector:@selector(ConnectFinished2:)];
但是,我可以在我的服务器中看到第二个调用正在使用第一个证书,即使它在 copyClientCertificate2 上获得了另一个证书。证书被缓存了吗?如何明确告诉第二个ASIHTTPRequest使用第二个证书?
注意:它是2个不同的URL,但是域名相同。
谢谢!
答案 0 :(得分:0)
如果可以,请尝试更改DNS设置,以便拥有两个不同的域。这应该可以解决你的缓存问题。
答案 1 :(得分:0)
你必须使用Matt Thompson的ASIHTTP unmaintained Library [[ASIDownloadCache sharedCache] removeCachedDataForURL:yourURLReference];
的这种方法