5
respostas

Primeiro acesso em aba anônima não consegue trazer o estilo.

Na primeira aula ao ativar o cache, tudo funciona perfeitamente com relação ao cache. Porém ao acessar em aba anônima a home, os arquivos de estilos buscados retornam 404.

Atualizar a página resolve, mas qual seria o problema do primeiro acesso de cada usuário?

5 respostas

Fala Mateus, tudo bem ?

Cara, meio estranho estar acontecendo isso. De onde estão vindo os arquivos CSS que você importa pra sua página ? Sua própria app os está servindo esses arquivos ou vem de algum outro host na web ? Você adicionou alguma configuração adicional para o spring liberar acesso aos arquivos estáticos ?

Uma outra coisa que é legal fazer pra ter mais informações sobre o que está ocorrendo na primeira requisição é usar o Dev Tools do seu navegador pra ver os logs de comunicação de rede (em geral é um Inspect > Aba Network > Faz o teste > clica na uri da sua requisição e vai abrir informações adicionais). Tente ver quais são as informações (endereço, informações enviadas, cookies, etc) na primeira requisição e comparar depois de fazer o refresh (que funciona).

Poste esses detalhes por aqui pra podermos tentar entender a razão do problema.

Espero ter ajudado. Abraço!

Fala Rafael.

Obrigado pela resposta. Seguem os detalhes que você falou.

Sobre a configuração dos arquivos estáticos eu precisei criar uma configuração adicional, pois não estavam vindo os estilos normalmente durante o curso 1. Segui o sugerido no post a seguir e criei essa classe extendendo WebMvcConfigurerAdapter:

[indo buscar o post, vi que você participou dele também kk]

https://cursos.alura.com.br/forum/topico-atualizacao-resources-nao-sao-carregados-na-aula-10-58813

package br.com.casadocodigo.loja.conf;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

public class ResourceConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }
}

O outro ponto pegando como exemplo o arquivo cssbase-min.css:

Primeiro acesso -

Request URL: http://localhost:8080/casadocodigo/;jsessionid=3D691E80AC841BE57AA872023CB88D20resources/css/cssbase-min.css
Request Method: GET
Status Code: 404 
Remote Address: [::1]:8080
Referrer Policy: no-referrer-when-downgrade
Content-Language: en
Content-Length: 1047
Content-Type: text/html;charset=utf-8
Date: Thu, 31 May 2018 16:57:42 GMT
Accept: text/css,*/*;q=0.1
Accept-Encoding: gzip, deflate, br
Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Cookie: JSESSIONID=3D691E80AC841BE57AA872023CB88D20
Host: localhost:8080
Referer: http://localhost:8080/casadocodigo/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36

Após refresh:

Request URL: http://localhost:8080/casadocodigo/resources/css/cssbase-min.css
Request Method: GET
Status Code: 200 
Remote Address: [::1]:8080
Referrer Policy: no-referrer-when-downgrade
Content-Length: 2062
Content-Type: text/css
Date: Thu, 31 May 2018 17:00:29 GMT
Last-Modified: Wed, 30 May 2018 00:51:30 GMT
Accept: text/css,*/*;q=0.1
Accept-Encoding: gzip, deflate, br
Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Cookie: JSESSIONID=3D691E80AC841BE57AA872023CB88D20
Host: localhost:8080
Referer: http://localhost:8080/casadocodigo/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36

Porque a primeira requisição viria com a URL desse jeito?

Rafael, obrigado pela ajuda. Uma busca rápida na internet sobre como tirar o JSESSION consegui fazê-lo adicionando a seguinte configuração no web.xml do servidor:

    <session-config>
        <session-timeout>30</session-timeout>
        <tracking-mode>COOKIE</tracking-mode> //linha adicionada
    </session-config>

Agora tudo funciona perfeitamente.

Mas ainda assim, o que provoca essa inclusão do parâmetro na URL?

E ai Matheus, tudo bem ?

Cara, realmente não sei o que fazia com que o JSESSIONID fosse adicionado naquele ponto da url, nunca vi acontecer antes. Em geral quando vai na url (casos onde o server não sabe qual suporte o cliente tem aos cookies e necessita da identificação da sessão do usuário por parametro) isso fica no fim do endereço. Exemplo: localhost:8080/contexto/path?param=foo&jsessionid=46bbdy64hd4 .. ou /;jsessionid=sd56sds57ds7. Como a uri foi montada com o jsessionid no meio do endereço ele fica mal formado dando 404.

Como está a tag link do seu html onde importa esse css ?

Estão da seguinte maneira:

<c:url value="/" var="contextPath" />
<link href="${contextPath}resources/css/fonts.css" rel="stylesheet" type="text/css" media="all" />
<link href="${contextPath}resources/css/fontello-ie7.css" rel="stylesheet" type="text/css" media="all" />
<link href="${contextPath}resources/css/fontello-embedded.css" rel="stylesheet" type="text/css" media="all" />
<link href="${contextPath}resources/css/fontello.css" rel="stylesheet" type="text/css" media="all" />
<link href="${contextPath}resources/css/style.css" rel="stylesheet" type="text/css" media="all" />
<link href="${contextPath}resources/css/layout-colors.css" rel="stylesheet" type="text/css" media="all" />
<link href="${contextPath}resources/css/responsive-style.css" rel="stylesheet" type="text/css" media="all" />
<link href="${contextPath}resources/css/guia-do-programador-style.css" rel="stylesheet" type="text/css" media="all" />
<link href="${contextPath}resources/css/produtos.css" rel="stylesheet" type="text/css" media="all" />