IT & Engineering

Curso intensivo de HTTP

HTTP significa Hypertext Transfer Protocol e é um mecanismo usado para transferir dados pela internet entre clientes (computadores, notebooks, celulares, etc.) e servidores.
Imagem para Curso intensivo de HTTP

Faz um tempo que não nos aprofundamos em um processo técnico mais básico e, embora o mundo do e-mail esteja em constante mudança, é bom dar um passo atrás e observar como as coisas funcionam. Como você pode notar pelo título, queríamos falar sobre HTTP: o que é, como funciona e suas diferentes funções hoje. Então aperte os cintos, é hora de um curso intensivo.

O que é HTTP?

HTTP significa Hypertext Transfer Protocol e é um mecanismo usado para transferir dados pela internet entre clientes (computadores, notebooks, celulares, etc.) e servidores.

Então, se você for até a barra de endereços do seu navegador e digitar um endereço da web, o navegador procurará o endereço do servidor associado a esse URL. A partir daí, o navegador tenta estabelecer uma conexão com o servidor conhecida como conexão TCP na HTTP porta padrão de tráfego: a porta 80. Se a conexão for estabelecida com o navegador (o que significa que o servidor é real), seu navegador enviará uma solicitação semelhante a esta:

                                

                                    GET /18_tyyp.html HTTP/2.0
Host: the web address or URL
User-Agent: The browser’s name
                                
                            

Usando a mesma conexão, o servidor responderá em seguida:

                                

                                    HTTP/2.0 200 OK
Content-Length: 65635
Content-Type: html/text
Last-Modified: Fri, 24 Jan 2020 08:35:42 GMT
<!doctype html>
…the document's remaining part
                                
                            

O navegador exibe seu corpo, a parte que segue a linha em branco no documento, como um documento HTML.

A request é a informação que o cliente enviou. Ela começa assim:

                                

                                    GET /18_http.html HTTP/2.0
                                
                            

O método de solicitação define a primeira palavra. GET indica que o recurso que você está buscando foi especificado. Outros métodos de solicitação incluem DELETE para excluir um recurso, PUT para substituir ou criar recursos e POST para enviar informações ao recurso. 

É importante observar que o servidor não tem nenhuma obrigação de responder a todas as solicitações enviadas a ele. Dito isso, é uma comunicação bem simples.

HTTP e navegadores

Quando você insere um URL na barra de endereços de um navegador, ele recebe o comando para fazer uma solicitação. Se a página HTML resultante da solicitação contiver outros arquivos, como arquivos JavaScript, imagens, etc., todos eles também serão recuperados e, juntos, criarão a página solicitada.

Alguns sites podem incluir de dez a 200 recursos. Para buscar todos eles rapidamente, o navegador faz várias solicitações GET simultâneas em vez de esperar pelas respostas, uma após a outra. Caso contrário, as páginas levariam uma eternidade para carregar corretamente, e ninguém tem tempo para isso.

Sandboxing de HTTP

Como você provavelmente sabe, o HTTP não é a comunicação mais segura do planeta. Existe um motivo de preocupação quando se faz uma solicitação HTTP no script de uma página da web. A pessoa responsável pelo script pode ter interesses diferentes da pessoa que executa a solicitação. Por exemplo, eu poderia visitar `themafia.org`, mas não quero que o script dessa página envie uma solicitação para outra usando informações que ele possa identificar do meu navegador. Não que eu esteja procurando a máfia nem nada disso.

É por esse motivo que os navegadores não permitem que o script de uma página da web faça solicitações HTTP para outro domínio: isso protege o usuário. No entanto, surge outro problema quando alguém tenta criar um servidor de sistema que pode solicitar acesso a outros domínios de forma legítima. Isso é facilmente resolvido se o servidor tiver um cabeçalho como este: Access-Control-Allow-Origin em sua resposta. O cabeçalho indica explicitamente ao navegador para permitir solicitações de outro domínio. 

HTTPS e segurança

Os dados podem viajar por um longo caminho na internet, e a rota que eles percorrem pode ser longa e perigosa. Antes de chegar ao seu destino, eles devem passar por várias etapas ao longo da rota que podem inspecionar ou até mesmo modificar os dados. 

Se você quer manter algo em segredo (como senhas) ou deseja que os dados cheguem ao destino sem modificações, então o HTTP comum não é suficiente. 

Um protocolo HTTP mais seguro é o https://. Esse URL encapsula o tráfego HTTP, dificultando a adulteração ou a leitura. Antes da troca de dados, o cliente primeiro confirma a autenticidade do servidor, pedindo que ele comprove ter seu certificado criptográfico, que geralmente é emitido por uma autoridade reconhecida pelo navegador. Após essa etapa, todos os dados que passam por essa conexão são criptografados, para que seja impossível adulterar e/ou interceptar. 

Quando o HTTPS funciona bem, ele impede que outras pessoas tentem se passar pelo site que você está tentando acessar, mantendo seus dados seguros. Contudo, ele não é perfeito. Se houver falha no software ou se os certificados forem roubados, os dados ainda podem estar em risco. Mesmo assim, é muito mais seguro do que o bom e velho HTTP.

Sobre a autora

Alice Jones é uma jornalista e freelancer que mora em São Francisco com foco em escrita de trabalhos acadêmicos e trabalho autônomo. Seu foco de escrita é amplamente baseado em negócios e marketing, e ela possui bacharelado e mestrado pela Universidade de São Francisco.