Já dei uma lida em vários tópicos do stackoverflow, os quais os 5 primeiros resultados da pesquisa spring static resources http error 405 no google não trazem uma resposta aceita como solucionadora para o problema. Está me parecendo aquele tipo de probleminha chato que leva horas para resolvido, vi muita resposta e pouca solução por aí, para não dizer nenhuma. :-(
A configuração para permitir que requisições não delegadas ao Servlet do Spring fossem encaminhadas para o Servlet container default já tinha sido realizada e vinha funcionando normalmente:
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
Pois simplesmente do nada passei a receber um status code 405 para os recursos estáticos da aplicação.
As requisições são feitas via GET mas no response header só permite um POST.
General
Request URL:http://localhost:8080/srm/resources/js/bootstrap.min.js
Request Method:GET
Status Code:405
Remote Address:127.0.0.1:8080
Referrer Policy:no-referrer-when-downgrade
Response Headers
view source
Allow:POST
Content-Language:en
Content-Length:1106
Content-Type:text/html;charset=utf-8
Date:Wed, 03 May 2017 21:37:13 GMT
Request Headers
Accept:*/*
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:en-US,en;q=0.8,pt-BR;q=0.6,pt;q=0.4
Cache-Control:no-cache
Connection:keep-alive
Cookie:JSESSIONID=4CBC80094AF931BB39981EAAABB47FE1; org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=pt
Host:localhost:8080
Pragma:no-cache
Referer:http://localhost:8080/srm/formPJ
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
Alguém já passou por isso?
EDIT: Eu fiz um pequeno teste aqui, e mudei o mapping do método
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView home() {
ModelAndView modelAndView = new ModelAndView("home");
System.out.println("Entering in home.jsp");
return modelAndView;
}
para POST e recebo justamente um HTTP Status 405 - Method Not Allowed, o que faz todo o sentido..
Mas, então me parece que em algum lugar está definido que para se obter os recursos só é aceito via POST e não GET. Se isto for verdade, aonde estaria essa definição? E porque sem nenhuma mudança na configuração desses recursos eles passaram a ter um comportamento diferente ?
EDIT 2: Outra coisa que observei é que mesmo comentando o método
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
a aplicação continua respondendo com http error 405. Quando eu imaginava que por conceito o Servlet container do spring ia voltar a responder com um 404 não ? Por não saber aonde estão esses recursos.