70.10 使用Tomcat的LegacyCookieProcessor

Spring Boot使用的内嵌Tomcat不能开箱即用的支持Version 0的Cookie格式,你可能会看到以下错误:

  1. java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value

可以的话,你需要考虑将代码升级到只存储遵从最新版Cookie定义的值。如果不能改变写入的cookie,你可以配置Tomcat使用LegacyCookieProcessor。通过向EmbeddedServletContainerCustomizer bean添加一个TomcatContextCustomizer可以开启LegacyCookieProcessor

  1. @Bean
  2. public EmbeddedServletContainerCustomizer cookieProcessorCustomizer() {
  3. return new EmbeddedServletContainerCustomizer() {
  4. @Override
  5. public void customize(ConfigurableEmbeddedServletContainer container) {
  6. if (container instanceof TomcatEmbeddedServletContainerFactory) {
  7. ((TomcatEmbeddedServletContainerFactory) container)
  8. .addContextCustomizers(new TomcatContextCustomizer() {
  9. @Override
  10. public void customize(Context context) {
  11. context.setCookieProcessor(new LegacyCookieProcessor());
  12. }
  13. });
  14. }
  15. }
  16. };
  17. }