Джерси REST GET работает, но PUT нет. Указанный метод HTTP не разрешен для запрошенного ресурса

Я ломал голову над этим уже несколько дней. Этот маленький фрагмент работает нормально (используется Jersey 2.26-b03 на Tomcat).

@GET
@Path("/{code}")
public Response update(@PathParam("code") String code) {
    System.out.println("!!!!!!!");
    return Response.status(Response.Status.OK).build();
}

curl -i -X GET http://localhost:18270/nyx/rest/servervirtueel/SVM0000
HTTP/1.1 200 OK

Затем я включил трассировку Джерси. Но если я только изменю GET на PUT (точно такой же метод, просто поменяю аннотацию):

@PUT
@Path("/{code}")
public Response update(@PathParam("code") String code) {
    System.out.println("!!!!!!!");
    return Response.status(Response.Status.OK).build();
}

curl -i -X PUT http://localhost:18270/nyx/rest/servervirtueel/SVM0000
HTTP/1.1 405 Method Not Allowed

Затем HTML сообщает мне, что "указанный HTTP-метод не разрешен для запрошенного ресурса". Тем не менее, POST работает (изменение аннотации снова).

1 ответ

Решение

Оказалось, что белый список метода OWASP был настроен на уровне Tomcat (Catalina), чтобы разрешить только GET и POST; это веб-приложение, которое до сих пор поддерживало только SOAP-сервисы. Вы не видите этого ни в файле web.xml, ни в файле server.xml, но в каталоге Catalina / localhost / webappname.xml.

Другие вопросы по тегам