RedirectHandler
一个协议,提供重定向函数,入参为将要被重定向的URLRequest,用闭包的方式返回一个新的URLRequest。
Session 内部有此成员变量,初始化时候可以传入。
具体执行过程在SessionDelegate中,URLSession的系统回调方法
open func urlSession(_ session: URLSession,task: URLSessionTask,willPerformHTTPRedirection response: HTTPURLResponse,newRequest request: URLRequest,completionHandler: @escaping (URLRequest?) -> Void) {eventMonitor?.urlSession(session, task: task, willPerformHTTPRedirection: response, newRequest: request)if let redirectHandler = stateProvider?.request(for: task)?.redirectHandler ?? stateProvider?.redirectHandler {redirectHandler.task(task, willBeRedirectedTo: request, for: response, completion: completionHandler)} else {completionHandler(request)}}
Redirector
一个遵循RedirectHandler的结构体,为我们提供了面对重定向可以采取的三个策略,目的是为了方便使用。
follow表示同意,doNotFollow禁止,modify修改重定向。
