Spring строгое декодирование символов URL - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть загрузочное приложение Spring, чье поведение по умолчанию при обработке нераспознаваемых параметров URL-адресов - их игнорирование.

Как я могу иметь более строгий анализ? где, если URL-адрес запроса не совпадает ни с одним из определенных API-интерфейсов или если URL-адрес запроса содержит какие-либо недопустимые параметры, он должен возвратить 400.

Например, теперь «/users/1/Addresses/???????L?%%%%%%%%%%1F%2F\F000000000» игнорирует деталь после адреса /и вызывает API "/users/1/Addresses".

Ошибка декодирования символов. Параметр [?????? L? %%%%%%%%%% 1F% 2FF000000000] со значением [] игнорируется. Обратите внимание, что указанное здесь имя и значение могут быть повреждены из-за неудачного декодирования. Используйте ведение журнала уровня отладки, чтобы увидеть исходные, не поврежденные значения. Примечание: дальнейшие появления ошибок параметров будут регистрироваться на уровне DEBUG.

Вместо этого поведения мне нужна пружина для возврата 404 или 400.

Как я могу это сделать?

1 Ответ

0 голосов
/ 08 ноября 2019

вы можете поместить @Pattern в pathvariable и поставить регулярное выражение, все остальные запросы будут отклонены приложением.

public void doSomething(@NotBlank @Pattern(regexp="you regex" @PathVariable String url) {

    }
...