Safari не уважает заголовки Cache-Control HTTP? - PullRequest
3 голосов
/ 26 августа 2010

Используя различные ресурсы, я разработал следующее промежуточное программное обеспечение django для предотвращения кэширования браузера для аутентифицированных пользователей:

class NoBrowserCachingMiddleware:
    def add_to_header(self, response, key, value):
        if response.has_header(key):
            values = re.split(r'\s*,\s*', response[key])
            if not value in values:
                response[key] = ', '.join(values + [value])
        else:
            response[key] = value

    def process_response(self, request, response):
        if hasattr(request, 'user') and request.user.is_authenticated():
            response['Expires'] = 0
            self.add_to_header(response, 'Cache-Control', 'no-cache')
            self.add_to_header(response, 'Cache-Control', 'no-store')
            self.add_to_header(response, 'Cache-Control', 'must-revalidate')
            self.add_to_header(response, 'Pragma', 'no-cache') #HTTP 1.0
            if request.is_ajax():
                return response
            if response.status_code != 200:
                return response
            if 'text/html' not in response['Content-Type']:
                return response

            # safari back button fix
            response.content = response.content.replace('<body', '<body onunload=""')

        return response

Я хотел бы удалить часть, в которой мне нужно изменить ответсодержание.Однако, если я это сделаю, Safari отобразит предыдущую кэшированную страницу после выхода из системы, если пользователь нажмет кнопку «Назад».Есть ли способ предотвратить это, используя стандартные заголовки HTTP?

Спасибо, Пит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...