Подтвердить что ты не робот

Accept-Encoding: gzip на iOS

Q1 В комплекте с iOS App я могу ожидать, что Accept-Encoding: gzip будет использоваться автоматически или мне нужно явно спросить для его использования, задав это в URL-адресе где-нибудь?

В настоящее время я использую вызов [NSData dataWithContentsOfURL: url], хотя я скорее всего перейду на конкретную настройку NSURLSession - возможно, это будет автоматически запрашивать кодировку gzip?

Q2 Кроме того, если он используется и сервер обязуется с gzip-ed контентом, исправляю ли я, что клиентская сторона будет автоматически декодировать сжатый контент прозрачно, чтобы мне не нужно было?

4b9b3361

Ответ 1

Все автоматическое, хотя я не могу сразу найти авторитетную ссылку. Вы можете доказать это эмпирически, используя прокси.

Самое лучшее, что я могу найти до сих пор: Примечания к выпуску iOS 7.1, мимоходом передают, что...

Было добавлено поведение совместимости для решения проблемы, когда некоторые веб-серверы отправили неправильное значение Content-Length для Содержимое Content-Encoding: gzip. Ранее NSURLConnection и NSURLSession отправит "сетевое соединение было потеряно" / Ошибка NSURLErrorNetworkConnectionLost (-1005) в этой ситуации.

Поведение совместимости применяется только в том случае, если значение Content-Length точно соответствует расширенному содержимому gzipd. Это не будет применяться для на 1 "или аналогичный расчёт.

то есть. NSURLConnection и NSURLSession включают код для обработки содержимого gzip и определенно сделали это до 7.1 (согласно ссылке на "ранее" ). Анекдотически они, похоже, делали это с незапамятных времен, но в любом случае 7.0+ составляют около 98% рынка загрузки приложений.