美文网首页
iOS使用IP直连时的Cookie管理

iOS使用IP直连时的Cookie管理

作者: brownfeng | 来源:发表于2021-02-26 10:15 被阅读0次

    iOS使用IP直连时的Cookie管理

    首先需要了解一下NSURLSessionConfiguration基础, 在初始化NSURLSession时, 需要传入一个NSURLSessionConfiguration对象, 我们认为NSURLSessionConfiguration是一个配置项, 在配置了这个对象以后, 通过它来配置的NSURLSession发出的HTTP/HTTPS请求属性.

    常见的HTTP配置例如:

    • 缓存策略与缓存 requestCachePolicy, URLCache
    • 请求/响应超时 timeoutIntervalForRequest/timeoutIntervalForResource
    • 网络访问策略networkServiceTypeallowsCellularAccess
    • 网络代理配置connectionProxyDictionary
    • Cookie管理策略HTTPShouldSetCookies, HTTPCookieAcceptPolicy以及HTTPCookieStorage
    • 公共请求头HTTPAdditionalHeaders
    • 支持的NSURLProtocol Hook, protocolClasses

    在使用这个NSURLSession发起request并接受response时, 会根据NSURLSessionConfiguration自动管理Cookie:

    1. 在请求发出去之前, NSURLSession会检查request.url.host,并和当前的HTTPCookieStorage中的Cookie.domain进行匹配, 如果匹配成功, 那么会给request增加Cookie的header
    2. 在收到response时, NSURLSession根据response header中的Set-Cookie获取Cookie, 然后检查request.url.host,两者匹配才会将后台种下的Cookie写入CookieManager中.

    有以上的基础, 在使用IP直连时:

    1. 由于我们会在请求时,将request.URL.host字段由domain替换成ip地址, 因此NSURLSession在请求发送时检查Cookie时, 就不会给我们增加Cookie header, 因为Cookie中的domain字段是域名, 而我们request.URL.hostCookie.domain不匹配.
    2. NSURLSession收到response时, 会检测Set-Cookie字段, 然后根据Cookie.domain, path...request.url.host是否匹配来决定是否写入CookieManager中.

    因此在处理Cookie时, 建议在处理Cookie时候, 参考HTTPDNS域名解析场景下如何使用Cookie?构造自己的HTTPDNSCookieManager

    相关文章

      网友评论

          本文标题:iOS使用IP直连时的Cookie管理

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