Edge обслуживает API из кеша даже после прохождения контроля кеша и прагматических заголовков - PullRequest
0 голосов
/ 11 марта 2019

API извлекается из кеша.Это происходит только в Edge.Я прошел через много похожих вопросов в stackoverflow и перепробовал все, но тщетно.

Я добавил заголовки, связанные с кэшем, в Vue js

axios.defaults.headers.common['Cache-Control'] = 'private, no-cache, no-store, must-revalidate'
axios.defaults.headers.common['Expires'] = 0
axios.defaults.headers.common['Pragma'] = 'no-cache'
axios.defaults.headers.common['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT'

Я также добавил заголовки кэша со стороны сервера.

[ResponseCache(NoStore = true, Location = ResponseCacheLocation.None)]
[ServiceFilter(typeof(AuthenticateFilter))]
[Produces("application/json")]
[Route("{tenant}")]
public class DashboardController : Controller
{
} 

Заголовки My Request выглядят как в chrome

Accept: application/json, text/plain, */*
Authorization: Token ggggggggggggggggggggg
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: 0
If-Modified-Since: Mon, 26 Jul 1997 05:00:00 GMT
Origin: http://somedummy.com
Pragma: no-cache
Referer: http://somedummy.com/dashboard/sample
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
withCredentials: true

И заголовки ответа:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://somedummy.com
Cache-Control: no-store,no-cache
Content-Type: application/json; charset=utf-8
Date: Mon, 11 Mar 2019 08:35:36 GMT
Pragma: no-cache
Strict-Transport-Security: max-age=31536000; includeSubDomains;
Transfer-Encoding: chunked
Vary: Origin
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Powered-By: ASP.NET
X-StackifyID: V1|b6841c38-3ec0-4a46-ac24-699ac8a5af0d|
X-XSS-Protection: 1; mode=block

API-интерфейсы загружаются с сервера в IE, Chrome и Safari, но только вКрай он обслуживается из кэша, хотя в параметре разработчика выбран параметр «Всегда обновлять с сервера».

enter image description here

Я также добавил метаданные в индекс.html

<meta http-equiv="expires" content="-1">
<meta http-equiv="cache-control" content="max-age=0">
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="pragma" content="no-cache">

В консоли нет ошибок.Нет предполетного (ОПЦИИ) вызова, идущего из Edge.Странно то, что когда открыт fiddler, API-интерфейсы обслуживаются с сервера в Edge.

Заранее спасибо.

1 Ответ

1 голос
/ 18 июня 2019

Ваша модификация - Ответ сервера , это не сработает, вместо этого вы должны использовать headers: { Pragma: 'no-cache' }

Пример:

const api = axios.create({
  headers: { Pragma: 'no-cache' },
});

Или добавьте его в конфигурацию

const config = {
    headers: { Pragma: 'no-cache'},
    params: { id: this.state.taskID }
}
axios.get("some URL", config).then(...)
...