Я разрабатываю приложение для управления пользователями на Angular 5, и пользователи сообщили о странной ситуации. Поток выглядит следующим образом:
приложение проверяет некоторую информацию в локальном хранилище
если информация верна, она выполняет перенаправление на другой компонент:
this.router.navigateByUrl("/user-list"); // points to UserListComponent
в свою очередь UserListComponent
загружает список на основе некоторых фильтров.
- для некоторых пользователей UserListComponent выполняет загрузку, используя более старую версию параметров, что приводит к сбою. Если они обновляют страницу, она работает правильно (обычное обновление, а не принудительное с использованием Ctrl-F5 или Ctrl-Shift-R).
Я пробовал следующее:
- доступ из Internet Explorer 11 или Firefox (Quantum или FrontMotion) => отлично работает
- очистка кэша Chrome за последние дни исправляет поведение
проверенные запросы, сделанные SPA в Инструментах разработчика:
проверено в других средах, и ошибка действительно возникает (единственное отличие не в использовании HTTPS)
Я проверил этот вопрос и ответы на него, но неясно, как действовать в Angular, так как большинство предложений касаются пользователей, выполняющих что-то на стороне клиента (в Google Chrome).
SPA размещается в IIS, поэтому содержимое web.config может иметь значение, поскольку содержит два переписывания (одно для http-https и одно для обновления страницы без потери внутреннего URL-адреса SPA):
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP 2 HTTPS" patternSyntax="Wildcard" stopProcessing="false">
<match url="*" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />
</rule>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/spa/" />
</rule>
</rules>
</rewrite>
</system.webServer>
Подводя итог всему вышесказанному, я чувствую, что причина связана с использованием перенаправлений + Chrome + (возможно, HTTPS).
Вопрос: Как предотвратить использование кэша перенаправления Google Chrome при перенаправлении в коде Angular?