iOS使用IP直连时的Cookie管理

2021-02-26  本文已影响0人  brownfeng

iOS使用IP直连时的Cookie管理

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

常见的HTTP配置例如:

在使用这个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

上一篇下一篇

猜你喜欢

热点阅读