【问题标题】:Accept-Encoding: gzip on iOS接受编码:iOS 上的 gzip
【发布时间】:2014-10-09 15:04:39
【问题描述】:

Q1 使用 iOS 应用套件,我是否可以期望 Accept-Encoding: gzip 会被自动使用,或者我是否需要通过在 URL 请求中的某处设置来明确要求使用它?

我目前正在使用电话[NSData dataWithContentsOfURL: url],尽管我可能会转而专门设置一个 NSURLSession – 这可能会自动请求 gzip 编码吗?

Q2 另外,如果 使用它并且服务器要求使用 gzip 格式的内容,我是否更正客户端将自动透明地解码压缩内容,以便我不需要?

【问题讨论】:

    标签: ios http-compression


    【解决方案1】:

    这一切都是自动的,尽管我无法立即找到权威参考。您可以使用代理来凭经验证明这一点。

    到目前为止我能找到的最好的:iOS 7.1 Release Notes 顺便提到...

    已添加兼容性行为以解决某些问题 Web 服务器会发送错误的 Content-Length 值 “内容编码:gzip”内容。以前,NSURLConnection 和 NSURLSession 会发送一个“网络连接丢失”/ 在这种情况下出现 NSURLErrorNetworkConnectionLost (-1005) 错误。

    兼容性行为仅适用于 Content-Length 值 与扩展的 gzip 内容完全匹配。它不会申请“关闭” 按 1 英寸或类似的错误计算。

    NSURLConnectionNSURLSession 包含处理 gzip 内容的代码,并且在 7.1 之前肯定是这样做的(根据对“以前”的引用)。有趣的是,他们似乎从远古时代就这样做了,但无论如何,7.0+ 现在约占应用下载市场的 98%。

    【讨论】:

    • 跟进上面的答案阅读URL Loading System
    • 嗨@tommy,谢谢——我对这个问题做了一点修改,以明确这个问题有两个部分。我想你已经给出了 Q2 的答案,但没有给出 Q1 的答案?
    • 我找到了 Q2 的合适来源,但从经验来看,答案都是“是”。我会继续打猎的。
    • 既然你是唯一一个对这些问题有具体答案的人 - 我再问你一个问题:上传请求也会自动发生这种情况吗?假设我的 POST 请求正文是一个巨大的丑陋 JSON - 我可以相信 NSURLSession 在发送之前将其放气吗?我应该以某种方式告诉它这样做吗?使用特定的额外标题?怎么办?
    猜你喜欢
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2019-05-27
    相关资源
    最近更新 更多