Как предотвратить кэширование токена защиты от подделки Asp.NET PWA? - PullRequest
0 голосов
/ 31 января 2019

У меня есть прогрессивное веб-приложение, которое использует sw-toolbox для управления кэшированием ресурсов.

Страница входа (/ user / login? Returnurl = xxxx) требуетмаркер подделки, поэтому я настроил маршрутизатор sw-toolbox следующим образом, чтобы гарантировать, что кэшированная версия содержимого страницы не возвращается:

toolbox.router.any("/user/*", toolbox.networkOnlyCustom);

, где метод networkOnlyCustom использует методnetworkOnly встроенный метод с предупреждением для возврата кешированной страницы «извините, вы не в сети», если пользователь находится в автономном режиме (см. Ниже):

toolbox.networkOnlyCustom = function (req, vals, opts) {
    return toolbox.networkOnly(req, vals, opts)
        .catch(function (error) {
            if (req.method === "GET" && req.headers.get("accept").includes("text/html"))
                return toolbox.cacheOnly(new Request("/home/offline"), vals, opts);
            throw error;
        });
};

Однако я вижу ««Не совпадают маркер cookie анти-подделки и токен поля формы».Не все время, хотя!На самом деле, если пользователь видит эту ошибку, затем нажимает кнопку «Назад» в браузере и снова отправляет форму, он входит в систему очень хорошо.

Я предположил, что причина в том, что браузер (Chrome 71 вмой случай) кеширует страницу входа в систему.Поэтому я добавил следующие HTTP-заголовки ответа в надежде, что браузер будет подчиняться:

cache-control: no-cache, no-store, no-store, must-revalidate
expires: -1
pragma: no-cache

Однако это не решило мою проблему.Любые идеи будут наиболее ценными!

...