首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

URLSession响应不包含上次重定向的标头

URLSession是苹果公司提供的一个用于进行网络请求和数据传输的框架。它是基于TCP/IP协议栈的高级封装,可以用于开发iOS、macOS和watchOS等苹果设备上的应用程序。

URLSession的响应(URLResponse)是一个包含了服务器返回的元数据的对象,它包含了响应的状态码、响应头、响应体等信息。然而,URLSession的响应不包含上次重定向的标头。

重定向是指当客户端发送请求到服务器时,服务器返回一个特殊的响应码(如301或302),告诉客户端需要重新发送请求到另一个URL。在重定向过程中,服务器会返回一个新的URL,客户端需要根据这个新的URL重新发送请求。

在URLSession中,如果发生了重定向,可以通过查看响应的状态码来判断是否发生了重定向。如果状态码是301或302,那么就说明发生了重定向。但是,URLSession的响应对象中并不包含上次重定向的标头信息。

如果需要获取上次重定向的标头信息,可以通过URLSession的代理方法来实现。具体步骤如下:

  1. 创建一个遵循URLSessionDelegate协议的代理对象,并实现代理方法。
  2. 在代理方法urlSession(_:task:willPerformHTTPRedirection:newRequest:completionHandler:)中,可以获取到重定向的请求和响应对象。
  3. 在该方法中,可以通过新的请求对象的allHTTPHeaderFields属性来获取上次重定向的标头信息。

以下是一个示例代码:

代码语言:txt
复制
class MyURLSessionDelegate: NSObject, URLSessionDelegate {
    func urlSession(_ session: URLSession, task: URLSessionTask, willPerformHTTPRedirection response: HTTPURLResponse, newRequest request: URLRequest, completionHandler: @escaping (URLRequest?) -> Void) {
        if let redirectedHeaders = request.allHTTPHeaderFields {
            // 在这里可以获取到上次重定向的标头信息
            print("上次重定向的标头信息:\(redirectedHeaders)")
        }
        
        // 继续请求重定向后的URL
        completionHandler(request)
    }
}

// 创建URLSession对象,并设置代理
let delegate = MyURLSessionDelegate()
let session = URLSession(configuration: .default, delegate: delegate, delegateQueue: nil)

// 创建请求对象
let url = URL(string: "http://example.com")
let request = URLRequest(url: url!)

// 发送请求
let task = session.dataTask(with: request) { (data, response, error) in
    // 处理响应数据
}
task.resume()

需要注意的是,URLSession的代理方法中的completionHandler参数是一个闭包,用于告诉URLSession是否继续请求重定向后的URL。如果需要继续请求,可以将request作为参数传递给completionHandler;如果不需要继续请求,可以将nil作为参数传递给completionHandler

总结:URLSession的响应对象不包含上次重定向的标头信息。如果需要获取上次重定向的标头信息,可以通过实现URLSession的代理方法来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

对 Google 说不 - 本站已启用屏蔽 FLoC 的 HTTP 标头

什么是 FLoC FLoC 通过获取浏览器的浏览记录将用户加入 “相似” 用户的分组内,每个分组拥有对应的 FLoC ID。...为什么要抵制 FLoC FLoC 被拒绝的原因正是目前第三方 Cookie 逐渐消失的原因,我们需要的是第三方 Cookie 的消失,而不是出现一个类似 (甚至在用于追踪的情况下功能更加完善) 的替代品...对这项技术的测试过程被部署到了大量的 Google Chrome 用户身上,而 Google 并没有进行提前的公告等工作,以致于大量用户并不了解这项技术。...EFF 的这篇博文详细解释了部分细节,如果需要的可以尝试阅读一下。...uBlock 等工具进行屏蔽 CloudFlare Browser Insights:CloudFlare 提供的网页性能监测工具,不会收集用户特定的信息 可以做的事 为自己的站点添加相关的拒绝标头:

86610

NSURLSession 所有的都在这里(二)

此方法仅适用于默认和临时会话中的任务。 后台会话中的任务会自动遵循重定向。...会话委托的URLSession:didReceiveChallenge:completionHandler:方法不针对非会话级别的挑战进行调用。...此委托方法可能被多次调用,并且每次调用仅提供自上次调用后收到的数据。 如果需要,该应用负责积累这些数据。...6、服务器响应中的缓存相关头(如果存在)允许缓存。 7、响应大小足够小,可以合理地放入缓存中。 (例如,如果您提供磁盘缓存,则响应不得超过磁盘缓存大小的5%。)...参数:filrOffest: 如果文件的缓存策略或上次修改日期阻止重新使用现有内容,则该值为零。否则,该值是一个整数,表示磁盘上不需要再次检索的字节数。

1.9K30
  • HTTP 返回状态值详解

    414——请求的资源URL长于服务器允许的长度 415——请求资源不支持请求项目格式 416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求 也不包含If-Range...304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。   ...如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...411(需要有效长度)服务器不接受不含有效内容长度标头字段的请求。   412(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。   ...417(未满足期望值)服务器未满足"期望"请求标头字段的要求。   5xx(服务器错误)   这些状态码表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    3.2K30

    四、《图解HTTP》- 状态码

    如果使用强缓存校验器,则响应不能包含实体标头,如果304响应没有指示条件情况下则进行重复请求,如果304响应包含缓存条目,则同样需要按照缓存条目更新到本地。...除非请求方法是 HEAD,否则响应应该包含一个带有超链接的简短超文本注释。308 永久重定向:服务器告诉客户端他们寻找的资源已经被临时重定向到另一个 URL。...响应内容中需要包含www-Authnticate 头信息和询问信息,如果已经存在证书访问还是401说明证书已经不被接受,如果401和前一个身份验证请求相同,并且浏览器进行了至少一次重试,则浏览器应该展示响应包含的实体信息...303 查看其他:此代码告诉客户端服务器不是将它们重定向到请求的资源,而是重定向到另一个页面。304 Not Modified:请求的资源自上次传输后没有改变。...如果使用强缓存校验器,则响应不能包含实体标头,如果304响应没用指示条件情况下则进行重复请求,如果304响应包含缓存条目,则同样需要按照缓存条目更新到本地。416  请求的范围不满足。

    1.1K10

    http协议的各类状态码

    304(未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。...如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...如果服务器返回此响应,还表示请求者应当使用代理。 408(请求超时) 服务器等候请求时发生超时。 409(冲突) 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。...411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。...417(未满足期望值) 服务器未满足”期望”请求标头字段的要求。 5xx(服务器错误) 这些状态码表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    1.2K80

    HTTP协议状态码

    304(未修改) 请求的网页自上次请求后再也没有修改过。当服务器返回此响应时,不会返回相关网页的内容。...如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。 408(请求超时) 服务器在等待请求时超时。 409(冲突) 服务器在完成请求时遇到冲突。服务器必须在响应中包含该冲突的相关信息。...411(需要有效长度) 服务器不会接受包含无效内容长度标头字段的请求。 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。...417(未满足期望值) 服务器未满足“期望”请求标头字段的要求。 5xx(服务器错误) 此类状态代码表示,服务器在尝试处理相应请求时发生内部错误。此类错误往往与服务器本身有关(与请求无关)。

    1.1K30

    teg http 返回码含义

    304(未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。...如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...如果服务器返回此响应,还表示请求者应当使用代理。 408(请求超时) 服务器等候请求时发生超时。 409(冲突) 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。...411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。...417(未满足期望值) 服务器未满足”期望”请求标头字段的要求。 5xx(服务器错误) 这些状态码表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    1.2K20

    常用HTTP状态码简介

    304(未修改) 自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。...如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...服务器必须包含有关响应中所发生的冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,同时会提供两个请求的差异列表。...如果资源已被永久删除,那么,您应当使用 301 代码指定该资源的新位置。 411(需要有效长度) 服务器不会接受包含无效内容长度标头字段的请求。...416(请求范围不符合要求) 如果请求是针对网页的无效范围进行的,那么,服务器会返回此状态代码。 417(未满足期望值) 服务器未满足"期望"请求标头字段的要求。

    2.1K60

    HTTP 304状态码的详细讲解

    你也许会有个疑问:“如果不改变网站内容,我怎么才能让Fiddler不返回304而返回一个包含响应体的HTTP/200响应呢?”...Caching选项,然后Fiddler就会:删除所有请求中的条件请求相同的请求头以及所有响应中的缓存时间相关的响应头.此外,还会在每个请求中添加Pragma: no-cache请求头,在每个响应中添加...304(未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。...如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。

    8.6K20

    HTTP状态码查询

    304(未修改) 自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。...如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。 408(请求超时) 服务器等候请求时超时。 409(冲突) 服务器在完成请求时发生冲突。服务器必须包含有关响应中所发生的冲突的信息。...411(需要有效长度) 服务器不会接受包含无效内容长度标头字段的请求。 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。...417(未满足期望值) 服务器未满足"期望"请求标头字段的要求。 5xx(服务器错误),这些状态代码表示,服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    1.8K100

    错误代码大全【100(临时响应)】【200(成功)】【300(已重定向)】【400(请求错误)】【500(服务器错误)】(HTTP协议版本)

    304(未修改) 自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。...如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...服务器必须包含有关响应中所发生的冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,同时会提供两个请求的差异列表。...如果资源已被永久删除,那么,您应当使用 301 代码指定该资源的新位置。 411(需要有效长度) 服务器不会接受包含无效内容长度标头字段的请求。...416(请求范围不符合要求) 如果请求是针对网页的无效范围进行的,那么,服务器会返回此状态代码。 417(未满足期望值) 服务器未满足”期望”请求标头字段的要求。

    4.9K10

    http状态代码含义

    304 未修改 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。...如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...如果服务器返回此响应,还会指明请求者应当使用的代理。 408 请求超时 服务器等候请求时发生超时。 409 冲突 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。...411 需要有效长度 服务器不接受不含有效内容长度标头字段的请求。 412 为满足前提条件 服务器未满足请求者在请求中设置的其中一个前提条件。...417 未满足期望值 服务器未满足”期望”请求标头字段的要求。 5xx 服务器错误 这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

    1.1K20

    http状态码

    304(未修改) 自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。 如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应。...如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。 307(临时重定向) 服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。...服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。 410(已删除) 请求的资源永久删除后,服务器返回此响应。...411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。...417(未满足期望值) 服务器未满足"期望"请求标头字段的要求。 500至505表示的意思是:服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    1.4K30

    HTTP 响应代码

    成功的含义取决于HTTP方法: GET:资源已被提取并在消息正文中传输。 HEAD:实体标头位于消息正文中。 POST:描述动作结果的资源在消息体中传输。...308 Permanent Redirect 这意味着资源现在永久位于由 Location: HTTP Response 标头指定的另一个 URI。...该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。...417 Expectation Failed 此响应代码意味着服务器无法满足 Expect 请求标头字段指示的期望值。 418 I'm a teapot 服务器拒绝尝试用 “茶壶冲泡咖啡”。...网站管理员还必须注意与此响应一起发送的与缓存相关的标头,因为这些临时条件响应通常不应被缓存。 504 Gateway Timeout 当服务器作为网关,不能及时得到响应时返回此错误代码。

    1.3K10

    http状态码

    206     处理部分请求; 3xx (重定向)  重定向代码,也是常见的代码 300   (多种选择)  针对请求,服务器可执行多种操作。...303   (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。  304   (未修改) 自从上次请求后,请求的网页未修改过。...307   (临时重定向)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 4开头的http状态码表示请求出错 400    服务器不理解请求的语法。 ...服务器必须在响应中包含有关冲突的信息。  410   如果请求的资源已永久删除,服务器就会返回此响应。  411   服务器不接受不含有效内容长度标头字段的请求。 ...417   服务器未满足”期望”请求标头字段的要求。 5开头状态码并不常见,但是我们应该知道 500   (服务器内部错误)  服务器遇到错误,无法完成请求。

    1.5K40

    iOS AFNetworking 源码阅读二

    的以下,创建session的时候,偶发的情况会出现session的属性taskIdentifier这个值不唯一,而这个taskIdentifier是我们后面来映射delegate的key,所以它必须是唯一的...代理3 // 被服务器重定向的时候调用 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *...看是否有对应的user block 有的话转发出去,通过这4个参数,返回一个NSURLRequest类型参数,request转发、网络重定向....然后这个方法是每次接受到对应片响应的时候会调被调用。你可以去设置上述4种对这个task的处理。...●我们转发了这个方法到AF的代理中去,所以数据的拼接都是在AF的代理中进行的。这也是情理中的,毕竟每个响应数据都是对应各个task,各个AF代理的。

    1.7K20

    HTTP状态码

    207 多种状态 由WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。...303 查看其他位置 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。 304 未修改 自从上次请求后,请求的网页未修改过。...服务器必须在响应中包含有关冲突的信息。 410 已删除 如果请求的资源已永久删除,服务器就会返回此响应。 411 需要有效长度 服务器不接受不含有效内容长度标头字段的请求。...416 请求范围不符合要求 如果页面无法提供请求的范围,则服务器会返回此状态代码。 417 未满足期望值 服务器未满足"期望"请求标头字段的要求。...无法完成处理 HTTP响应类型一共分五大类:消息响应,成功响应,重定向,客户端错误,服务器端错误.

    1.2K20
    领券