如何忽略https认证

使用一个私有API可以忽略证书无效等问题


[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];

注意这是一个私有API,使用这个代码的APP将会被苹果商店拒绝。


另提供2个合法的方式,NSURLConnectionDelegate的

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge


实例代码:

-(BOOL)connection:(NSURLConnection*)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace*)protectionSpace {
  return[protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}

-(void)connection:(NSURLConnection*)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge*)challenge {
  if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
    if([trustedHosts containsObject:challenge.protectionSpace.host])
      [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];

  [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}

如果使用web view来请求网页的话,添加这么一句[NSURLConnection connectionWithRequest:request delegate:self];

在.NET中,HttpClient类通常用于发起HTTP请求。当使用HttpClient访问HTTPS资源时,默认情况下会进行SSL/TLS证书验证。但是,在某些特定的开发或测试场景中,你可能需要忽略SSL证书的验证。虽然在生产环境中忽略SSL证书验证是不安全的,但在控制环境下,可以通过以下几种方式来实现忽略HTTPS证书认证: 1. 使用WebClient类: WebClient类允许你在创建实例时通过设置`ServicePointManager.ServerCertificateValidationCallback`委托来忽略SSL证书验证。 ```csharp using (var client = new WebClient()) { ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; // 发起请求的代码 } ``` 2. 使用HttpClient和自定义的HttpClientHandler: HttpClientHandler类允许你通过设置`ServerCertificateCustomValidationCallback`委托来实现相同的效果。 ```csharp var handler = new HttpClientHandler(); handler.ServerCertificateCustomValidationCallback = delegate { return true; }; var client = new HttpClient(handler); // 发起请求的代码 ``` 3. 使用HttpWebRequest和ServicePointManager: 在.NET Framework中,你也可以使用`HttpWebRequest`类和`ServicePointManager`来忽略证书验证。 ```csharp ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; var request = (HttpWebRequest)WebRequest.Create("https://example.com"); // 发起请求的代码 ``` 请注意,上述方法虽然能够忽略SSL证书验证,但这会使应用程序容易受到中间人攻击,因此只应在完全信任的内部网络或测试环境中使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值