美文网首页
处理重定向和其他请求改变(xcode文档翻译)

处理重定向和其他请求改变(xcode文档翻译)

作者: 郭苒 | 来源:发表于2017-04-12 22:59 被阅读0次

当服务器通过指示客户端向不同的URL发出新请求来响应请求时,会发生重定向。NSURLSession类在发生这种情况时会通知它的代理。要处理重定向,你的URL加载类代理必须实现URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:delegate方法。在这个方法中,代理可以检查引起重定向的新请求和响应,并可以通过NSURLSession的回调返回一个新的请求对象。
代理可以执行以下任何操作:

  • 允许通过简单地返回提供的请求进行重定向。
  • 创建一个新请求,指向一个不同的URL,并返回该请求。
  • 拒绝重定向并通过返回nil从连接中接收任何现有数据。

此外,代理可以取消重定向和连接。 使用NSURLSession,代理通过将取消消息(cancel message)发送到任务对象来执行此操作。如果处理请求的NSURLProtocol子类已更改了NSURLRequest,代理也会收到URLSession:task: willPerformHTTPRedirection: newRequest:completionHandler:消息,以便将其格式标准化,例如更改http://www.apple.com的请求到http://www.apple.com/.。这是因为请求的标准化或规范版本用于缓存管理。 在这种特殊情况下,传递给代表的响应为nil,代理应该只返回提供的请求
清单3-1中的示例实现允许规范更改并拒绝所有服务器重定向。

清单3-1 URLSession的实现示例:task:willPerformHTTPRedirection:newRequest:completionHandler

- (void)URLSession:(NSURLSession *)session
        task:(NSURLSessionTask *)task
        willPerformHTTPRedirection:(NSHTTPURLResponse *)redirectResponse
        newRequest:(NSURLRequest *)request
        completionHandler:(void (^)(NSURLRequest *))completionHandler
{
    NSURLRequest *newRequest = request;
    if (redirectResponse) {
        newRequest = nil;
    }
 
    completionHandler(newRequest);
}

如果代理不提供合适的重定实现去处理代理方法,则允许所有规范更改和服务器重定向。

提示:感觉本篇翻译的不是很好,请参考原文不当之处希望各位提出来,我会及时改正。

相关文章

  • 处理重定向和其他请求改变(xcode文档翻译)

    当服务器通过指示客户端向不同的URL发出新请求来响应请求时,会发生重定向。NSURLSession类在发生这种情况...

  • 重定向与请求转发(转载)

    请求重定向:由客户重新发起请求 请求转发:由服务器自己内部分派请求给另一内容处理 重定向 servlet中重定向方...

  • 请求重定向与请求分派

    请求重定向由客户重新发起请求请求分派有服务器自己内部分派请求给另一内容处理 重定向 servlet中重定向方法: ...

  • PHP Laravel学习之HTTP响应,cookie设置,重定

    官网文档传送门:处理用户请求 —— HTTP 响应、重定向 响应 HTTP响应就是服务器在接受到客户端的请求,所作...

  • 状态响应码

    200 - 请求成功,已经正常处理完毕 301 - 请求永久重定向,转移到其它URL 302 - 请求临时重定向 ...

  • 常见的http状态码

    200 请求成功 301 永久重定向 302 303 临时重定向 304 缓存.未改变 400 请求格式不对,服务...

  • ios官方文档 - 通知中心 NSNotification Ce

    引用:官方Xcode文档和api参考注:中文翻译均使用Google翻译英文版:ios 官方文档 — 通知中心 NS...

  • Javaweb请求转发及重定向实现详解

    请求转发:在同一个controller将请求转发到另一个请求映射,请求地址不会发生改变 重定向:将请求重定向到不同...

  • 请求转发、重定向

    请求转发 请求重定向 处理流程图如下: 地址栏不会改变 转发只能转发到当前web应用内的资源 可以在转发过程中,可...

  • 状态码

    状态码类别 1XX:请求已经接受,继续处理中 2XX:请求已经处理成功 3XX:请求重定向 4XX:请求错误(语法...

网友评论

      本文标题:处理重定向和其他请求改变(xcode文档翻译)

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