开发者社区> 问答> 正文

【HPPTDNS】可以使用IP代替域名直接访问吗 ?

可以使用IP代替域名直接访问吗 ?

展开
收起
EMAS支持组 2022-09-20 16:08:59 583 0
1 条回答
写回答
取消 提交回答
  • 不能直接访问,需要设置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

    2022-09-20 16:21:11
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
基于阿里巴巴以及合作伙伴的最佳实践,围绕大前端、云原生领域的相关技术热点(小程序、Serverless、应用中间件、低代码、DevOps)展开行业探讨,与开发者一起探寻云原生时代应用研发的新范式。
问答排行榜
最热
最新

相关电子书

更多
域名大数据的应用 立即下载
“域”见更美好的未来——域名筑梦互联网+ 立即下载
“域”感——《域名投资从入门到精通》 立即下载