Я не могу заставить кодировку запроса работать правильно. Для кодирования работать, я добавил фильтр к прыжку безопасности:Весенний ботинок MVC неправильно закодированный запрос POST
@Bean
public CharacterEncodingFilter characterEncodingFilter() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
filter.setForceEncoding(true);
return filter;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.addFilterBefore(characterEncodingFilter(), CsrfFilter.class);
...
}
Добавить мета в мои страницы:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
...
Добавить UriEnconding в кот 8:
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443" />
Но это не отвечает никому из них. Когда я отправляю запрос и отлаживаю его, результат получается неверным. Например, когда я отправляю بای
в качестве части формы запроса, я получаю باÛ
. Есть ли какая-то часть конфигурации, которую я не вижу?
При отправке запроса ajax с полезной нагрузкой (с клиентом rest и другом другом) он работает правильно, но не удастся с данными формы. Мой контроллер выглядит следующим образом:
@RequestMapping(value = "/test1")
@ResponseBody
public String test1(@RequestBody String req) {
return req;
}
@RequestMapping(value = "/test2")
@ResponseBody
public String test2(@RequestParam("search") String req) {
return req;
}
различные попытки:
- для test1 с
Content-Type=application/json
это правильно recieves параметр. - для test2 с
Content-Type=application/x-www-form-urlencoded
и получить метод, снова все отлично работает. - для test2 с
Content-Type=application/x-www-form-urlencoded
и методом POST, он возвращает неверные кодированные значения.
Похоже, что проблема связана с методом POST. какие-либо предложения?
Кажется, что даже задавая вопрос, вы можете найти ответ;). Хотелось бы, чтобы я спросил его раньше. не через 2 дня ... – alizelzele
Какую весеннюю версию вы используете? Версия 1.2 должна уже иметь параметр 'CharacterEncodingFilter' по умолчанию, с по умолчанию' UTF-8'. См. Https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.2-Release-Notes#consistent-http-uribody-decoding –
Я использую версию 1.2.4. возможно, добавив, что он переопределяет значение по умолчанию. Дай мне проверить. просто мин :) – alizelzele