{"id":19844713,"url":"https://github.com/lucasrmagalhaes/web-http","last_synced_at":"2026-03-19T12:01:43.755Z","repository":{"id":103561652,"uuid":"608510008","full_name":"lucasrmagalhaes/web-http","owner":"lucasrmagalhaes","description":"HTTP: Entendendo a web por baixo dos panos","archived":false,"fork":false,"pushed_at":"2023-03-03T01:56:10.000Z","size":60,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-21T14:20:34.716Z","etag":null,"topics":["alura","http","web"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucasrmagalhaes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-02T06:54:29.000Z","updated_at":"2024-08-26T01:55:19.000Z","dependencies_parsed_at":"2023-03-16T05:00:13.015Z","dependency_job_id":null,"html_url":"https://github.com/lucasrmagalhaes/web-http","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lucasrmagalhaes/web-http","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fweb-http","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fweb-http/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fweb-http/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fweb-http/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucasrmagalhaes","download_url":"https://codeload.github.com/lucasrmagalhaes/web-http/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fweb-http/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29021031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T18:51:31.335Z","status":"ssl_error","status_checked_at":"2026-02-02T18:49:20.777Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alura","http","web"],"created_at":"2024-11-12T13:05:15.228Z","updated_at":"2026-02-02T21:49:17.585Z","avatar_url":"https://github.com/lucasrmagalhaes.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"### HTTP: Entendendo a web por baixo dos panos\n\n**HTTPS**\n- Web Segura\n- Certificado Digital (identidade)\n- Chaves (pública e privada)\n\n**Descobrir o IP**\n```\nnslookup google.com\n```\n\n**O que é um domínio na Internet?**\n- O domínio é o nome do site na Web. Ele facilita a navegação do usuário, que não precisa lembrar o IP de cada site.\n\n**Como funciona o DNS?**\n- O DNS tem como função realizar a tradução do nome de um domínio para o endereço de IP correspondente.\n\n**Porta padrão HTTP**\n- 80\n\n**Endereços**\n- URL são endereços da WEB\n- Uma URL começa com o protocolo (http://) seguido pelo domínio (www.alura.com.br)\n- Após o domínio é especificado o caminho para um recurso (course/introducao-html-css)\n- Um recurso é algo conectado que queremos acessar\n\n![URL](https://s3.amazonaws.com/caelum-online-public/http/http-url.png)\n\n**smb**\n- Server Message Block. Ele é utilizado para compartilhar arquivos dentro de uma rede local.\n\n**HTTP (REQUEST-RESPONSE)**\n- O protocolo HTTP segue o modelo REQUISIÇÃO-RESPOSTA\n- Uma requisição precisa ter todas as informações para o servidor gerar a resposta\n- HTTP é STATELESS! (Não mantém informações entre requisições)\n- As plataformas de desenvolvimento usam sessões para guardar informações entre requisições\n\nUma requisição sempre deve ser enviada com todas as informações necessárias, o que faz uma requisição ser sempre independente das demais.\n\n**Sessão HTTP**\n- É o tempo que o cliente utiliza um web app.\n- Uma sessão HTTP nada mais é que um tempo que o cliente permanece ativo no sistema! Isso é parecido com uma sessão no cinema. Uma sessão, nesse contexto, é o tempo que o cliente usa a sala no cinema para assistir a um filme. Quando você sai da sala, termina a sessão. Ou seja, quando você se desloga, a Alura termina a sua sessão.\n\nUma comunicação com HTTP sempre é iniciada pelo cliente que manda uma requisição ao servidor esperando por uma resposta.\n\n* [Status Code](https://www.w3schools.com/tags/ref_httpmessages.asp)\n* [HTTP STATUS DOGS](https://httpstatusdogs.com/)\n* [HTTP Cats](https://http.cat/)\n* [HTTP Status Codes Glossary](https://www.webfx.com/web-development/glossary/http-status-codes/)\n\n```\n200, 203, 207 -\u003e Respostas de Sucesso\n300, 301, 302 -\u003e Mensagem de redirecionamento\n401, 404, 405 -\u003e Respostas de erro do cliente\n500, 502, 503 -\u003e Respostas de erro do servidor\n```\n\n**Sobre o HTTP**\n- Requisições HTTP podem ser enviadas através de qualquer aplicativo/software que entenda o protocolo.\n- HTTP é totalmente independente do formato dos dados.\n- HTTP pode trafegar tanto dados binários quanto dados textuais.\n\n**Sobre o formato**\n- Pelo cabeçalho Accept.\n\n```\nAccept: text/html, Accept: text/css, Accept: application/xml, Accept: application/json, Accept:image/jpeg e Accept: image/*\n```\n\n```\nAccept: */*\n```\n\n**REST (Representational State Transfer - Transferência de Estado Representacional)**\n- É um padrão arquitetural para comunicações entre aplicações\n- Aproveita da estrutura que o HTTP proporciona\n- Recursos são definidos via URI\n- Operações com os métodos do HTTP (GET/POST/PUT/DELETE)\n- Cabeçalhos (Accept/Content-Type) para especificar a representação (JSON, XML, ...) \n\n![REST](https://s3.amazonaws.com/caelum-online-public/http/images/08/imagem2-cap8-rest-http.png)\n\n[MIME types](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types)\n\n**HTTP2 - Dados binários, GZIP ativo e TLS**\n```\ncurl -v google.com.br\n```\n\n![CURL - divisão](https://s3.amazonaws.com/caelum-online-public/http/images/08/curl.png)\n\n![GZIP](https://s3.amazonaws.com/caelum-online-public/http/images/08/gzip.png)\n\n![Binário](https://s3.amazonaws.com/caelum-online-public/http/images/08/binario.png)\n\n![HPACK](https://s3.amazonaws.com/caelum-online-public/http/images/08/hpack.png)\n\n![TLS](https://s3.amazonaws.com/caelum-online-public/http/images/08/tls.png)\n\n**Motivos por trás do HTTP/2**\n- Com o crescimento do número de dispositivos móveis conectados a Web, é cada vez mais importante que a quantidade de dados trafegada seja a menor possível, afinal este tipo de dispositivo não costuma ter uma conexão com muita banda larga. O protocolo HTTP/2 traz diversas tecnologias para diminuir o tamanho das requisições.\n- Por padrão, no protocolo HTTP versão 1.1 não é necessário o uso da camada de segurança TSL/SSL. Como hoje em dia trafegamos muitos dados críticos na Web, como senhas, logins e dados bancários, um protocolo atualizado que faz uso dessa segurança parece quase uma necessidade.\n\n**Para que serve a tecnologia HPACK implementada no protocolo HTTP/2 ?**\n- Para comprimir os Headers da comunicação HTTP, deixando-os mais leves.\n\n**Selecione as afirmativas verdadeiras sobre as versões 1.1 e 2.0 do protocolo HTTP:**\n- No HTTP/1.1 o Gzip não é nativo do protocolo, no HTTP/2 ele já vem por padrão.\n- No HTTP/2 o uso do HTTPS é obrigatório, no HTTP/1.1 não.\n- No HTTP/2 os dados são trafegados em binário, no HTTP/1.1 eles são trafegados como texto.\n\n**Como a tecnologia de Headers Stateful pode nos ajudar a economizar dados?**\n- Como trafegamos apenas os headers que mudam de uma requisição para outra, acabamos por economizar uma boa quantidade de dados, pois não precisamos enviar headers que mudam poucas vezes a todo momento, como o Accept.\n- Quando estamos utilizando Headers Stateful, simplesmente colocamos nas requisições os cabeçalhos que se alteraram entre uma e outra, trazendo uma enorme economia de dados, visto que toda requisição HTTP possui um cabeçalho e que, muitas vezes, no HTTP/1.1, cabeçalhos repetidos eram trafegados em todas as requisições.\n\n**HTTP2 - Server Push**\n- O servidor pode empurrar para o clientes certos recursos antes mesmo de serem solicitados, pois ele consegue analisar o HTML e ver o que mais é preciso para carregar a página fazendo com que não seja necessário gastar tempo pedindo todos os outros recursos.\n\n![HTTP2 - Server Push](https://s3.amazonaws.com/caelum-online-public/http/http2-push.png)\n\n**HTTP2 - Multiplexação**\n\n![Multiplexing](https://s3.amazonaws.com/caelum-online-public/http/images/08/keep-alive-http2.png)\n\n**HTTP/2**\n- Atua sobre o que já se conhece de HTTP\n- Headers binários e comprimidos (HPACK)\n- GZIP padrão na resposta\n- Multiplexing (requisição e respostas são paralelas)\n- Headers Stateful (mandamos apenas os cabeçalhos que mudam)\n- Server-Push\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasrmagalhaes%2Fweb-http","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucasrmagalhaes%2Fweb-http","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasrmagalhaes%2Fweb-http/lists"}