首页
学习
活动
专区
工具
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 提供网页性能监测工具,不会收集用户特定信息 可以做事 为自己站点添加相关拒绝

83910

NSURLSession 所有的都在这里(二)

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

1.7K30

HTTP 返回状态值详解

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

2.8K30

四、《图解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.1K30

http协议各类状态码

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

1.2K80

teg http 返回码含义

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

1.1K20

常用HTTP状态码简介

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

2K60

HTTP 304状态码详细讲解

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

3.6K20

HTTP状态码查询

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

1.7K100

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

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

4K10

http状态代码含义

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

1K20

http状态码

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

1.3K30

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.2K10

http状态码

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

1.5K40

C# HTTP系列5 HttpWebResponse.StatusCode属性

Ambiguous 指示请求信息有多种表示形式。 默认操作是将此状态视为重定向,并遵循与此响应关联 Location 内容。不明确是的同义词MultipleChoices。...MultipleChoices 指示请求信息有多种表示形式。 默认操作是将此状态视为重定向, 并遵循与此响应关联 Location 内容。 MultipleChoices是的同义词不明确。...ProxyAuthenticationRequired 指示请求代理要求身份验证。 Proxy-authenticate 包含如何执行身份验证详细信息。...作为 POST 结果,SeeOther 将客户端自动重定向到 Location 头中指定 URI。 用 GET 生成对 Location 所指定资源请求。...Unauthorized 指示请求资源要求身份验证。 WWW-Authenticate 包含如何执行身份验证详细信息。

2.1K20

HTTP状态码

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

1.2K20
领券