美文网首页
iOS HTTP DNS方案研究

iOS HTTP DNS方案研究

作者: HCYellow | 来源:发表于2019-02-18 21:56 被阅读0次

    Github地址

    设计:

    首先,本地保存一份初始的DNS Json文件
    然后根据时机进行更新和废除
    PS:本部分,未进行实现

    使用

    直接替换IP

    NSString *originUrlString = [request.URL absoluteString];
        NSString *originHostString = [request.URL host];
        NSRange hostRange = [originUrlString rangeOfString:originHostString];
        if (hostRange.location != NSNotFound) { 
             NSString *ip = [[CustomDNSManager sharedClient] requestIPWithHost:originHostString];
        }
    

    以下只拦截请求,不修改请求

    若要修改,修改RichURLSessionProtocol中的canonicalRequestForRequest方法

    全局拦截

    不包含单独的session和AFN

     -(BOOL)application:(UIApplication *)application 
     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        [NSURLProtocol registerClass:[RichURLSessionProtocol class]];
    }
    

    UIWebView拦截

    期间的接口请求也会被拦截
    页面初始化时

    - (void)viewDidLoad {
        [super viewDidLoad];
        [NSURLProtocol registerClass:[RichURLSessionProtocol class]];
    }
    

    页面销毁

    - (void)dealloc {
        
        [NSURLProtocol unregisterClass:[RichURLSessionProtocol class]];
    }
    

    AFN拦截或者NSURLSessionConfiguration

        NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
        NSArray *protocolClasses = @[[RichURLSessionProtocol class]];
        config.protocolClasses = protocolClasses;
        AFHTTPSessionManager *manage = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:config];
    

    WKWebview

    参考文献:

    相关文章

      网友评论

          本文标题:iOS HTTP DNS方案研究

          本文链接:https://www.haomeiwen.com/subject/msttyqtx.html