【问题标题】:How to disable keepalive in NSURLConnection?如何在 NSURLConnection 中禁用 keepalive?
【发布时间】:2015-05-17 19:10:03
【问题描述】:

有什么办法可以强制NSURLConnection不重用当前的持久连接而是创建一个新的?

我试图保护自己免受这个已知的iOS8 keep-alive bug

如果 iOS 8 接收到带有 Keep-Alive 标头的 HTTP 响应,它会保留这个 稍后重新使用的连接(应该如此),但它会保留更多时间 比 Keep-Alive 标头的超时参数,然后当 第二个请求来了,它试图重用一个已经被 被服务器丢弃。

我正在寻找一种从 Objective c 解决此问题的方法,而不是从服务器端解决。

如果任何第三方库提供了一种忽略 Keep-alive 标头的方法,那么它也是受欢迎的。

此问题与以下问题有些相关(1,2)

感谢任何帮助!

【问题讨论】:

    标签: ios8 nsurlconnection afnetworking keep-alive persistent-connection


    【解决方案1】:

    我发现的唯一方法是使用CFNetwork。更高级别的 API,例如 NSURLConnectionNSURLSessionConnection 标头将被系统覆盖。

    【讨论】:

    • 所以我们目前没有任何选项可以禁用它。
    • 无法使用 NSURLSession 为 HTTP 标头中的 Connection 设置值,例如关闭,iOS 只是忽略该值并始终发送 keep-alive
    • 正如我在回答中所说,您可以使用低级 API,例如 CFNetwork
    • 如果我们使用低级 API,苹果会拒绝该应用程序吗?可以分享一下工作代码 sn-p 吗?
    • 当然不会被拒绝。它是公共 API。该代码不是 sn-p,而是非常简单,只需设置 Connect 标头。你应该阅读文档。
    猜你喜欢
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2018-09-28
    • 2014-01-14
    • 2011-09-27
    相关资源
    最近更新 更多