可以使用IP代替域名直接访问吗 ?
不能直接访问,需要设置HTTP请求头HOST字段 。
标准的HTTP协议中服务端会将HTTP请求头HOST字段的值作为请求的域名信息进行解析。
使用HTTPDNS后,您可能需要将HTTP请求URL中的HOST字段替换为HTTPDNS解析获得的IP,这时标准的网络库会将您的IP赋值给HTTP请求头的HOST字段,进而导致服务端的解析异常(服务端认可的是您的域名信息,而非IP信息)。
为了解决这个问题,您可以主动设置HTTP请求HOST字段的值,如下:
NSString *originalUrl = @"http://www.aliyun.com/";
NSURL* url = [NSURL URLWithString:originalUrl];
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
// 同步接口获取 IP
NSString* ip = [httpdns getIpByHostAsync:url.host];
if (ip) {
// 通过 HTTPDNS 获取 IP 成功,进行 URL 替换和 HOST 头设置
NSRange hostFirstRange = [originalUrl rangeOfString: url.host];
if (NSNotFound != hostFirstRange.location) {
NSString* newUrl = [originalUrl stringByReplacingCharactersInRange:hostFirstRange withString:ip];
request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:newUrl]];
// 设置请求 HOST 字段
[request setValue:url.host forHTTPHeaderField:@"host"];
}
}
更多官方信息
EMAS官网介绍:https://www.aliyun.com/product/emas
Devops:https://www.aliyun.com/product/emascrash/mobile_devops
移动热修复:https://www.aliyun.com/product/hotfix
移动测试:https://www.aliyun.com/activity/emas/mqcexpert
移动推送:https://www.aliyun.com/product/cps
HTTPDNS:https://www.aliyun.com/product/httpdns
EMAS 控制台: https://emas.console.aliyun.com/products
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。