Задать вопрос

Сайт кешируется в корпоративных сетях

Здравствуйте.

Имеется корпоративное Джанго-приложение с авторизацией. Время от времени звонят люди из крупных организаций (телекомов, банков) и жалуются на то, что видят страницы с информацией о другом пользователе, например, своего коллеги. Подозреваю, что это из-за кеширования на прокси-серверах в этих организациях: возможно, прокси отдает куки авторизованного пользователя всем без разбора, в результате получивших их аноним автоматом логинится.

Вопрос, как этого избежать? Добавил в шаблон:
<meta http-equiv="Cache-Control" content="no-cache">
но не помогает. Может, нужно отдавать кеш-контроль в виде заголовка?

Джанга 1.4, Питон 2.7, Апач 2.2, mod_wsgi, сессия хранится в куках.

UPD: сделал миддварь:
#nevercache.py
from django.utils.cache import patch_cache_control

class NeverCacheMiddleware():
    def process_response(self, request, response):
        patch_cache_control(response, no_cache=True, no_store=True,
                                must_revalidate=True, proxy_revalidate=True)
        return response

#settings.py
MIDDLEWARE_CLASSES = (
    "nevercache.NeverCacheMiddleware",
    #...
)
  • Вопрос задан
  • 3028 просмотров
Подписаться 4 Средний Комментировать
Решения вопроса 1
FloppyFormator
@FloppyFormator
Именно в виде заголовка. На кэширование влияют заголовки Cache-Control и Expires. В Django заголовки доступны как ключи объекта класса HttpResponse:

response = HttpResponse()
response['Cache-Control'] = 'no-cache'
response['Expires'] = 'Mon, 26 Jul 1997 05:00:00 GMT'
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
А привязать это к глобальному layout'у?
у меня допустим, вся разметка всех страниц хранится в одном файле, текст страниц уже дергается отдельно.
Но у меня Asp.Net MVC.
Ответ написан
@egorinsk
Надо запретить кеширование страниц, если пользователь залогинен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы