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

25.09.2012 | 10:28
Баг с кэшированием 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 быстро выпустит апдейт, в котором будет исправлена ошибка, а разработчикам не придётся использовать обходной путь для решения этой проблемы в ближайшие пять лет.
AJAX, баг, кэширование
По материалам xakep.ru
Лента новостей: FacebookLiveJournalЯндекс

Комментарии (0)
Оставьте комментарий:CaptchaОбновить проверочный код