gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:13:47 26 4
gpt4 key购买 nike

我想要什么:

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

常用方法:

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

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

问题:

如果我的服务器服务于多个域,那么服务器将为我的请求返回一个默认证书。 SNI 仅在它在 url 中找到主机时才起作用。

如果我想在问题场景中实现我想要的,那么任何建议。

最佳答案

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

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

  • 在不同的 header 字段中添加主机名,然后使用自定义身份验证处理委托(delegate)方法自己根据该证书的域显式验证证书,如果它验证并且它是您的证书之一< strong>并且它是针对您的一个域,即使证书的域与请求的域不匹配,也允许请求继续。
  • 在您的应用程序中包含一个基本代理,并将 session 配置为在按名称连接到该主机时始终使用它。在代理中,打开一个正常的 TCP/IP NSStream 到正确的 IP 地址并来回传递数据。
  • 编写一个自定义 HTTPS 客户端,它支持的功能足以处理您正在做的任何事情。

关于ios - 如何为 HTTP 请求指定服务器 IP 而不是 DNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36813947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com