Таким образом, основной причиной получения этой ошибки являются символы "[" и "]". Подробнее о URL и URI, разрешенных символам в этом ответе: Какие символы делают URL недействительным? .
Лучший способ (следуя стандарту) - кодировать URL на стороне клиента:
encodeURL("localhost:8080/deduplicate?data=[1,23,4,5]")
>localhost:8080/deduplicate?data=%5B1%2C23%2C4%2C5%5D
Используя почтальона, вы хотите выбрать свои данные в окне параметров запроса, щелкнуть правой кнопкой мыши и выбрать «EncodeURIComponent»:
Пример кодирования с использованием почтальона передаст ваш URL-адрес
localhost:8080/deduplicate?data=%5B1%2C23%2C4%2C5%5D
И он может быть успешно прочитан tomcat (я полагаю, вы используете его в качестве контейнера сервлета).
Если вы не можете изменить свое поведение интерфейса, вы можете использовать
relaxedQueryChars / relaxedPathChars
в определении соединителей, чтобы разрешить эти символы. Используя java и пружину (если tomcat встроен):
@Component
public class TomcatWebServerSettings implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.addConnectorCustomizers(connector ->
{
connector.setAttribute("relaxedQueryChars", "[]");
});
}
}
Или вы можете добавить атрибут relaxedQueryChars
под сервером. xml (% TOMCAT_FOLDER% / conf /):
<Connector
//other params,
relaxedQueryChars="[,]"
/>
Также вы можете понизить ваш tomcat до версии ниже 7.0.76 (настоятельно не рекомендуется - по соображениям безопасности).