Джерси 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.