Skip to content

Instantly share code, notes, and snippets.

@brcontainer
Last active Jan 10, 2020
Embed
What would you like to do?
Como funciona a solicitação de uma página de um servidor? https://pt.stackoverflow.com/q/430246/3635

O que acontece quando o usuário clica em um link?

O link foi renderizado no seu navegador, quando você vê uma página web ele não está no site, ele foi baixado do site e "salvo" em tempo de execução ou cache e é exibido na sua tela e você clicar no link faz uma execução no BROWSER e o browser vai solicitar uma requisição HTTP para baixar a próxima baixa e descarrega a página anterior e irá processar a nova assim que o download for sendo completado ou que o buffer completo concluir (depende da maneira que a página irá descarga)

O que acontece no servidor quando o usuário clica em um link?

Não acontece nada, o link <a></a> já está na sua máquina, o processo quem faz é o navegador, o link é apenas um gatilho.

Após o link o navegador vai fazer uma requisição HTTP GET, mais ou menos assim:

GET / HTTP/1.1
Host: siteacessado.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: pt-BR,en,en;q=0.9
Accept-Encoding: gzip, deflate

Quais são as etapas para o servidor retornar a página para o usuário?

  1. baixar o conteudo
  2. o servidor (vulgo backend) processar a solicitação HTTP no apache/nginx/iis ("servidor web")
  3. Opcional, se o site for dinamico, como uma linguagem de programação que gera páginas dinamicamente o servidor web enviará a solicitação HTTP para o SAPI que vai comunicar com o interpretador linguagem backend, um bastante comum usado para varios interpretadores e até executáveis é o fast-CGI
  4. o servidor HTTP processa (seja dinamico ou não) e obtem a resposta HTTP
  5. a resposta HTTP é enviada via download
  6. o navegador ao terminar o download renderiza a página

O servidor consegue retornar qualquer tipo de arquivo, além de páginas?

O servidor não interpreta os arquivos, quem faz isto é o navegador, o servidor pode enviar qualquer coisa, afinal é informação apenas, a unica coisa que ele tem que fazer para facilitar é enviar o header Content-Type para ajudar o navegador a sabe qual o formato provavelmente é o do corpo que foi baixado.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment