ios – 如何为HTTP请求而不是DNS指定服务器IP

前端之家收集整理的这篇文章主要介绍了ios – 如何为HTTP请求而不是DNS指定服务器IP前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要的是:

为NSMutableURLRequest指定服务器IP以避免localDNS查询.

常用方法

替换URL中的主机字段,并为HTTP请求指定HOST标头字段.

request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://1.1.1.1/path"]];
[request setValue:@"www.a.com" forHTTPHeaderField:@"host"];

问题:

如果我的服务器服务于多个域,则服务器将返回我的请求的默认证书. SNI仅在网址中找到主机时才有效.

所以,如果我想在问题场景中实现我想要的任何建议.

解决方法

实际上,主机头用于确定证书.服务器永远不会看到完整的URL.如果URL包含IP地址,则IIRC,NSURLSession和朋友通常不会覆盖用户指定的主机头.但是,它应该是“主机”中的大写“H”.因为该标题位于您不应该触及的标题列表中,所以大写可能很重要.

如果修复大小写不起作用,您可以考虑其他几种方法

>在不同的头字段中添加主机名,然后使用自定义身份验证处理委托方法自行显式验证该证书的域,如果它验证并且它是您的某个证书并且它是针对您的某个域,则允许即使证书的域与请求的域不匹配,也要继续.>在您的应用程序中包含一个基本代理,并将会话配置为在按名称连接到该主机时始终使用它.在代理中,将正常的TCP / IP NSStream打开到正确的IP地址并来回传递数据.>编写一个自定义HTTPS客户端,该客户端支持足够的功能来处理您正在执行的任何操作.

猜你在找的iOS相关文章