Баг с кэшированием HTTP POST в iOS6

Discussion in 'Мировые новости. Обсуждения.' started by Solitude, 24 Sep 2012.

  1. Solitude

    Solitude Member

    Joined:
    29 Aug 2011
    Messages:
    445
    Likes Received:
    23
    Reputations:
    1
    Баг с кэшированием HTTP POST в iOS6

    В операционной системе iOS 6 обнаружилась неожиданная новая функция: система автоматически кэширует все ответы на запросы POST, даже если в заголовке явно прописано, что их нельзя кэшировать. Из-за этого у многих разработчиков веб-приложений «поломалась» функциональность, которая была реализована на Ajax.

    У пользователей iOS6 некоторые веб-приложения некорректно работают, поскольку браузер берёт из кэша информацию, которую должен получать от сервера в интерактивном режиме.

    Например, разработчики фреймворка PhoneGap приводят такой пример.
    getNewRecordID(intRecordType)

    Если используется такая функция, то каждый раз при запросе к серверу она возвращает разный результат, но под iOS6 результат будет закэширован, так что приложение не сможет нормально работать.

    В качестве обхода можно при каждом вызове менять название функции.
    getNewRecordID(intRecordType, strTimestamp)

    Эксперт рабочей группы IETF HTTPbis Working Group Марк Ноттингем (Mark Nottingham) объясняет, что такое поведение iOS 6 является очевидным нарушением спецификаций RFC 2616, которые разрешают кэширование ответов HTTP POST только в исключительных случаях.

    Марк Ноттингем выражает надежду, что Apple быстро выпустит апдейт, в котором будет исправлена ошибка, а разработчикам не придётся использовать обходной путь для решения этой проблемы в ближайшие пять лет.

    24.09.2012
    http://www.xakep.ru/post/59363/​