Как отключить правило перенаправления S3 Bucket? - PullRequest
0 голосов
/ 16 марта 2019

У меня есть корзина S3, в которой размещено приложение Vue, в котором используется Vue Router с включенным режимом истории.Первоначально у меня было следующее правило перенаправления, чтобы обойти S3, не способного разрешать «виртуальные» маршруты (на основе этого подхода).Он добавляет префикс пути к хэш-синтаксису, который сценарий на странице идентифицирует и удаляет, используя history.pushState(), чтобы превратить его обратно в путь без хеширования, понятный режиму истории.

<RoutingRules>
  <RoutingRule>
    <Condition>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <HostName>mydomain.com</HostName>
      <ReplaceKeyPrefixWith>#!/</ReplaceKeyPrefixWith>
    </Redirect>
  </RoutingRule>
</RoutingRules>

Однакоболее современный подход - просто позволить CloudFront сделать это, указав 403 и 404 страницы ошибок на /index.html (на основе этого подхода).

После настройки ошибки CloudFrontстраницы, я удалил правило перенаправления из корзины и даже документ об ошибке из корзины.Тем не менее, S3 продолжает использовать правило перенаправления и префикс мои маршруты с #!/.

Как я могу заставить правило перенаправления прекратить работу?

1 Ответ

1 голос
/ 17 марта 2019

Аннулирование CloudFront работает на пути, который запрашивает браузер, а не на пути, запрашиваемом у исходного (внутреннего) сервера.

Аннулирование /, вероятно, сработало бы в этом случае, но /* делает все недействительным. Использование /index.html (консоль незаметно добавляет начальный /, если вы этого не сделаете) очистит кэш только в том случае, если браузер напрямую запрашивает /index.html.

CloudFront принимает запросы на аннулирование, даже если они ничего не соответствуют, потому что запрос на аннулирование по сути является директивой , гарантирующей, что в кеше нет подходящих объектов . Когда запрос на аннулирование завершается, тогда это условие истинно - в этот момент нет подходящих объектов. Независимо от того, были ли они удалены или их никогда не было, можно сказать, что запрос на аннулирование был выполнен успешно, потому что теперь он пропал ... но побочным эффектом этого является то, что вы не получите предупреждение, если сделаете недействительным то, что было никогда там.

...