Letters in my header such as á are shown as á.
Apparently the Header comes in iso-8859-1 and my application fails to encode it to utf8.
I am extremely puzzled that none of my approaches work.
What I did so far in Spring Boot:
Attempt 1: set application properties
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
Attempt 2: set filterRegistrationBean
@Bean
public FilterRegistrationBean filterRegistrationBean() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setForceEncoding(true);
characterEncodingFilter.setEncoding("UTF-8");
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setOrder(1);
registration.setFilter(characterEncodingFilter);
return registration;
}
Attempt 3: add to filter Chain directly
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
filter.setForceEncoding(true);
http.addFilterBefore(filter, CsrfFilter.class)
.addFilterBefore(myAuthFilter, AbstractPreAuthenticatedProcessingFilter.class)
.authorizeRequests()
.antMatchers("/").permitAll()
....
None of this had any affect. I would still store and send the header as iso-8859-1.
Just for testing I changed the setup from UTF-8 to iso-8859-1, and saw the filter indeed have an effect. I would now encode it twice to iso-8859-1.
I simply don't understand why UTF-8 is not working in my case.