Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

spring static resources http error 405

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.

5 respostas

vixe, não parece fazer sentido mesmo... os recursos estáticos são baixados via get, com certeza. Ainda não sei bem o que pode estar acontecendo.. seu projeto pode ser baixado pelo github? acho que vai ser necessário dar uma olhada.

Davi, você conseguiu resolver seu problema ?

Caso tenha conseguido posta a solução por favor !

solução!

Lucas, eu consegui resolver meu problema sim, mas a resposta para ele é um pouco desapontante, pois eu não sei precisar exatamente qual foi o problema.

Eu passei uns dias continuando desenvolvendo a aplicação com as páginas mal formatadas mesmo, para não parar o desenvolvimento enquanto eu não conseguia ter os recursos estáticos carregados novamente.

Criando e alterando mapeamentos nos controladores, os recursos estáticos voltaram a ser carregados. Logo a única opção que me restou foi a de que havia algum mapeamento errado e estava gerando o erro. Logo eu peço que se você estiver com algo parecido, que revise tanto os seus url mappings quanto se as requisições são GET ou POST.

Grato,

Davi, muito obrigado vou dar uma olhada nos mapeamentos.

O mais louco é que eu ja assisti todas as aulas 2 vezes pra ver se tinha alguma coisa diferente e não consegui achar...

Mas farei o que vc disse .

Opa !

Consegui mudar o erro com o esquema do mapeamento, o problema é que agora o navegador está mostrando o seguinte erro: 'Resource interpreted as Stylesheet but transferred with MIME type text/html: Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:8080/MeuProjeto/resources/css/bootstrap.min.css".

se alguém puder me ajudar agradeço.