質問: (httpservletresponse) resp; httpresp.setheader("cache-control", "no-cache, no-store, must-revalidate"); httpresp.setheader("this-header-is-set", "no-cache, no-store, must-revalidate"); httpresp.setheader("expires", "0"); chain.dofilter(req, resp); } ブラウザに表示されるものは次のとおりです。cache-control:no-store this-header-is-set:no-cache, no-store, must-revalidate expires:0 私が望むのは:cache-control:no-cache, no-store, must-revalidate this-header-is-set:no-cache, no-store, must-revalidate expires:0
回答: これは、spring securityが原因で発生します。すべてのキャッシュヘッダーを書き換えて、キャッシュを完全に無効にします。したがって、次の2つのことを行う必要があります。 静的リソースのスプリングセキュリティを無効にする 静的リソースキャッシュ処理を有効にする spring bootの現在のバージョンでは、application.properties configでこの動作を変更できます。一部のリソースのスプリングセキュリティを無効にします。# comma-separated list of paths to exclude from the default secured security.ignored=/myassets/** 静的リソースのキャッシュヘッダーの送信を有効にします。# enable html5 application cache manifest rewriting. spring.resources.chain.html-application-cache=true # enable the spring resource handling chain. disabled by default unless at least one strategy has been enabled. spring.resources.chain.enabled=true # enable the content version strategy. spring.resources.chain.strategy.content.enabled=true # comma-separated list of patterns to apply to the version strategy. spring.resources.chain.strategy.content.paths=/** # locations of static resources. spring.resources.static-locations=classpath:/meta-inf/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ それで全部です。これで、springは静的ファイルが変更されたかどうかを確認し、よりスマートな応答(if-modiffied-sinceなど)を送信し、アプリキャッシュも書き換えることができます。また、一部のリソースでコンテンツベースのバージョンを使用しない理由がある場合は、代替fixedversion戦略を使用して、構成で明示的にバージョンを設定できます。#enable the fixed version strategy. spring.resources.chain.strategy.fixed.enabled=false # comma-separated list of patterns to apply to the version strategy. spring.resources.chain.strategy.fixed.paths= # version string to use for the version strategy. spring.resources.chain.strategy.fixed.version= ドキュメントの詳細を参照