GET-запрос Safari Caching даже с отключенным кешем - PullRequest
0 голосов
/ 23 января 2019

Я установил все известные мне заголовки, чтобы отключить кэширование (даже отключив ETAG) на моем сервере, но Safari все еще время от времени (примерно 50%) кэширует мои запросы.

Рабочий процесс

Я реализую oauth 1, поэтому:

  1. Браузер делает GET /api/user запрос

  2. Сервер возвращает 405

  3. Браузер перенаправляет на сторонний веб-сайт для аутентификации

  4. Браузер перенаправляется на api/callback, который сохраняет некоторую информацию в cookie.

  5. Браузер перенаправляется обратно на исходный маршрут.

  6. Браузер делает запрос GET /api/user, который должен быть успешным, однако вместо этого он получает 405 обслуженных из дискового кэша.

Запрос сводных данных у Safari Network Inspector

Сводка

URL: http://localhost:3000/api/user

Статус: 405 Method Not Allowed

Источник: Disk Cache

Запрос

Нет запроса, подается из дискового кэша.

Ответ

Кодирование передачи: Identity

Тип содержимого: application/json; charset=utf-8

Прагма: no-cache

Контроль кэша: private, no-cache, no-store, must-revalidate, max-age=0

Варьируется: Cookie, Accept-Encoding

Дата: Wed, 23 Jan 2019 11:34:23 GMT

Кодировка содержимого: gzip

Истекает: Thu, 01 Dec 1994 16:00:00 GMT

Соединение: close

x-powered-by: Express

Заключение

Понятия не имею, что не таки я буду очень признателен за любую помощь.Моя версия Safari 12.0.2.Я не смог повторить эту проблему с Chrome.

1 Ответ

0 голосов
/ 23 января 2019

Используйте Vary: *.Это волшебным образом решило мою проблему.

Этот ответ помог мне: https://stackoverflow.com/a/2068353/1364158

В качестве альтернативы, вы можете действительно заставить браузер загрузить новую версию запроса, включив в свой URL какой-то бессмысленный случайный аргумент запросаНапример, /api/user?ts=18284

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