美文网首页
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