Você abre um painel que usou ontem e o Chrome mostra uma página cinza e simples: “Esta página não está funcionando”, com HTTP ERROR 401 no fim. Em um servidor de empresa, o mesmo código aparece como “401 - Unauthorized: Access is denied due to invalid credentials.” No Postman, é um 401 vermelho ao lado de uma chamada de API que funcionava uma hora atrás.
Os três são o mesmo código de status HTTP: o servidor queria saber quem você é e não recebeu uma resposta que aceite. A seguir você vê o que ele significa, como ele se diferencia do 400, do 403 e do 407, as soluções para visitantes e para desenvolvedores e um teste real com cURL.
O que significa 401 Unauthorized?
Um 401 significa que o servidor não executou a sua requisição porque ela chegou sem credenciais válidas. O padrão HTTP, a RFC 9110, define o código na seção 15.5.2 como uma requisição à qual faltam credenciais de autenticação válidas para o recurso de destino. Credenciais são qualquer coisa que prove quem você é: uma senha, um cookie de sessão, uma chave de API ou um token.
O servidor também precisa enviar um cabeçalho WWW-Authenticate que diz ao cliente como fazer login. Se a requisição já levava credenciais, o 401 significa que elas foram recusadas.
O nome engana. Autenticação responde a “quem é você?”, e autorização, a “o que você pode fazer?”. Um 401 trata da primeira pergunta; uma recusa na segunda é um 403 Forbidden.
Como é um erro 401?
Depende de quem o mostra: o navegador, o servidor web e uma API escrevem a mensagem cada um do seu jeito.
| O que você vê | Quem mostra | O que significa |
|---|---|---|
| “Esta página não está funcionando”, “HTTP ERROR 401” | Chrome | O site enviou um 401 sem página própria |
| Uma caixinha pedindo usuário e senha | O seu navegador | O site usa o login HTTP (Basic) |
| “401 - Unauthorized: Access is denied due to invalid credentials.” | IIS, o servidor web da Microsoft | O IIS não aceitou o login |
401 e uma mensagem JSON curta | Uma API, no Postman ou no código | A chave ou o token está ausente, errado ou expirado |
A página do Chrome (aqui, a versão em português) não diz nada sobre a causa; no nosso teste, o Chromium, o motor por trás do Chrome, mostrou essa página para um 401 com o corpo vazio.
O que é o cabeçalho WWW-Authenticate?
WWW-Authenticate é o cabeçalho de resposta em que o servidor informa o método de login, chamado esquema. A referência do MDN mostra a sintaxe completa. Basic pede usuário e senha, enviados codificados em Base64 (não criptografados, então só é seguro sobre HTTPS); os navegadores respondem com a própria caixa de login. Bearer pede um token, o formato que o OAuth 2.0 usa. Negotiate e NTLM são o login do Windows em redes corporativas.
WWW-Authenticate: Basic realm="Staging server", charset="UTF-8"
WWW-Authenticate: Bearer realm="example", error="invalid_token"Com tokens, leia o valor de error. A RFC 6750, o padrão dos tokens Bearer, define invalid_token para um token expirado, revogado ou malformado (401), insufficient_scope para um token sem a permissão necessária (403) e invalid_request para uma requisição malformada (400). Uma requisição sem token recebe só o pedido de login, sem código de erro. Muitas APIs deixam de enviar o cabeçalho apesar da regra; aí só o corpo da resposta mostra o motivo.
Como um 401 acontece, passo a passo?
Um 401 é a primeira metade de uma troca curta:
- A requisição. O seu navegador ou script pede uma página protegida sem credenciais, ou com credenciais que não valem mais.
- O desafio (challenge). O servidor responde 401 e informa o esquema em
WWW-Authenticate. - As credenciais. O navegador abre a caixa de login, o aplicativo leva você para a página de login dele ou o seu código pede um token.
- A repetição. A requisição vai de novo com um cabeçalho
Authorization, comoAuthorization: Bearer <token>. - O veredito. Credenciais válidas recebem a página (200 OK), inválidas recebem outro 401, e válidas sem permissão, um 403.
A maioria dos sites com formulário de login manda o visitante deslogado para a página de login em vez de devolver um 401. Por isso, um 401 no navegador costuma vir de uma área administrativa, de uma intranet de empresa ou de um aplicativo web cujas chamadas à própria API são recusadas.
Qual é a diferença entre 400, 401, 403 e 407?
Os quatro códigos se diferenciam por quem recusa e por quê: o 400 é uma requisição que o servidor não consegue ler, o 401 um login ausente ou recusado, o 403 um usuário conhecido sem permissão e o 407 o seu proxy pedindo as próprias credenciais.
| Código | Quem recusa | O que significa | O que resolve |
|---|---|---|---|
400 | O site ou a API | A requisição está malformada | Corrigir a requisição |
401 | O site ou a API | Não há credenciais válidas | Fazer login ou enviar um token válido |
403 | O site ou a API | Conhecido, mas sem permissão | Outra conta ou a permissão do site |
407 | O seu proxy | O proxy quer credenciais | O usuário e a senha do proxy ou a lista de IPs |
Um 401 convida você a tentar de novo com credenciais; um 403 diz que as mesmas credenciais não vão ajudar. Erro 403 Forbidden: o que significa e como resolver trata desse caso.
Um 400 vem ainda antes: o servidor não conseguiu ler a requisição, então nunca verificou quem a enviou, como explica o nosso guia do erro 400 Bad Request.
Um proxy que pede credenciais responde 407 Proxy Authentication Required com um cabeçalho Proxy-Authenticate, nunca 401. A solução é o usuário e a senha do proxy, ou o seu IP na whitelist dele (lista de IPs liberados), não o seu login no site. Como corrigir HTTP 407 Proxy Authentication Required mostra onde as credenciais do proxy entram em cada ferramenta.
O proxy vê o seu token? Não em um endereço https://: o cliente abre um túnel pelo proxy com uma requisição CONNECT, e o cabeçalho Authorization viaja dentro da conexão criptografada até o site. O proxy vê só o nome do host e a porta; é assim que os Proxies HTTPS transportam chamadas de API. Em http:// simples, o token passa como texto legível.
Por que estou recebendo um erro 401?
Para um visitante, um 401 quase sempre significa que o site não reconhece mais o seu login, ou nunca o recebeu:
- A sua sessão terminou por inatividade, por uma troca de senha ou por um logout em outro aparelho, ou o cookie do site (o pequeno arquivo em que ele lembra de você) está corrompido.
- O seu gerenciador de senhas preencheu outra conta, por exemplo a pessoal em um site onde você também tem uma conta de trabalho.
- Você cancelou a caixa de login do navegador, ou digitou nela uma senha errada.
- O link era para outra pessoa. Painéis compartilhados e servidores de teste podem exigir uma conta que você não tem.
- Uma página da empresa espera a sua conta de trabalho e recusa um computador pessoal ou um navegador fora da rede da empresa.
Erro 401: como resolver se você é visitante
Siga estes passos em ordem; os primeiros levam segundos.
- Confira o endereço. Um erro de digitação ou um favorito antigo pode levar a uma área protegida; abra a página a partir da página inicial do site.
- Saia da conta e faça login de novo para obter uma sessão nova.
- Confira a conta. Veja qual nome de usuário o seu gerenciador de senhas preencheu e digite as credenciais à mão uma vez.
- Apague os cookies daquele site. No Chrome: Mais > Configurações > Privacidade e segurança > Cookies de terceiros > Ver todos os dados e as permissões do site, procure o site e selecione Excluir. Isso desconecta você apenas daquele site.
- Teste uma janela anônima. No Chrome, Mais > Nova janela anônima (Ctrl + Shift + N) abre sem os cookies do site e sem as extensões que você não permitiu ali. Se a página funcionar nessa janela, um cookie ou uma extensão causava o 401.
- Responda à caixa de login com as credenciais que você recebeu. Se ela continuar voltando, as credenciais estão erradas; pergunte a quem deu o acesso a você.
- Entre em contato com o site ou com a sua equipe de TI informando o endereço, o horário e a conta que você usou.
Um 401 tem uma única solução honesta: credenciais emitidas para você. Testar outras senhas ou usar a conta de outra pessoa é acesso não autorizado, e falhas repetidas podem bloquear a conta.
Erro 401: como resolver se você é desenvolvedor
No código, um 401 significa que o servidor não aceitou o que chegou no cabeçalho Authorization, então confira a requisição antes da conta. Leia primeiro o valor de WWW-Authenticate e o corpo da resposta.
- O cabeçalho não está sendo enviado. Se a saída de
curl -vnão tem uma linha> Authorization:, nada foi enviado. Os suspeitos de sempre: uma variável de ambiente vazia ou um redirecionamento. O cURL descarta o cabeçalhoAuthorizationquando um redirecionamento leva a outro host, outra porta ou outro protocolo (http ou https), a menos que você adicione--location-trusted; no nosso teste, um redirecionamento delocalhostpara127.0.0.1transformou um 200 em um 401. - O esquema está errado. Um token vai como
Authorization: Bearer <token>; usuário e senha vão comoBasic. Um token enviado como Basic,Tokenonde a API esperaBearerou uma chave de API em um cabeçalho que a API não lê terminam todos em 401. Deixe um único espaço depois do esquema e não use aspas. - O token expirou ou foi revogado.
error="invalid_token"no desafio indica isso. Obtenha um token novo, com um refresh token (token de atualização) se tiver um, e tente de novo uma vez. - Os relógios não batem. Um JWT (JSON Web Token) traz a própria expiração (
exp) e o próprio início de validade (nbf), conferidos com o relógio do servidor. Um relógio alguns minutos fora faz um token recém-emitido parecer expirado ou ainda não válido; o padrão JWT prevê uma tolerância de no máximo alguns minutos, então sincronize as duas máquinas com NTP. - O token é de outro destino: um token de staging enviado para produção, ou um emitido para outra API. Um JWT informa o destinatário previsto no campo
aud(audience), e um servidor que não se encontra ali precisa rejeitá-lo. - A verificação prévia do navegador é recusada. Antes de uma requisição entre sites com cabeçalho
Authorization, o navegador envia uma requisiçãoOPTIONS, a verificação prévia do CORS (preflight), que nunca leva credenciais. Se o servidor também exigir token ali, ele responde 401 e a requisição real nunca sai. Responda aOPTIONSsem autenticação. - A configuração do próprio servidor. No IIS, o número depois do ponto indica o motivo: 401.1 um logon que falhou, 401.2 as configurações de autenticação do servidor, 401.3 as permissões de arquivo; a lista de códigos de status do IIS da Microsoft traz o restante. No Gerenciador do IIS, o recurso Authentication (Autenticação) do site mostra quais métodos estão habilitados.
Se o seu crawler (robô de rastreamento) recebe um 401, a página está atrás de um login: colete só páginas públicas ou use a API oficial do site com uma chave emitida para você. Nunca repita um 401 em loop; sem credenciais novas, ele não tem como dar certo.
Como testar um 401 com cURL?
O curl -i imprime a linha de status e os cabeçalhos de resposta acima do corpo, o suficiente para ver um 401 e o desafio dele. Escrevemos no nosso próprio computador uma pequena API de teste em Node.js cujo endpoint /api/profile responde 401 a menos que a requisição leve demo-token-123, um token inventado, e a chamamos com o cURL 8.22 que vem no Windows 11:
curl -i http://localhost:8401/api/profileHTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example"
Content-Type: application/json
Content-Length: 21
Date: Thu, 12 Nov 2026 01:20:35 GMT
Connection: keep-alive
Keep-Alive: timeout=5
{"error":"no token"}Depois, com o token:
curl -i -H "Authorization: Bearer demo-token-123" http://localhost:8401/api/profileHTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 16
Date: Thu, 12 Nov 2026 01:20:35 GMT
Connection: keep-alive
Keep-Alive: timeout=5
{"user":"demo"}Com um token vencido, o servidor respondeu 401 com error="invalid_token". No Windows PowerShell 5.1, curl é um atalho para o Invoke-WebRequest, então digite curl.exe ali.
Qual é a diferença entre uma chave de API e um token OAuth?
Uma chave de API é um segredo de longa duração que identifica o seu aplicativo ou a sua conta; um token de acesso OAuth é um passe de curta duração emitido depois que alguém faz login.
| Pergunta | Chave de API | Token de acesso OAuth |
|---|---|---|
| Quem emite | O painel do serviço | Um servidor de login, depois de um login |
| Quanto tempo vale | Até ser excluída ou trocada | Minutos ou horas; um refresh token o renova |
| Como é enviado | Em um cabeçalho ou parâmetro que a API indica | Authorization: Bearer <token> |
| Causa típica de 401 | Digitada errado, excluída ou no lugar errado | Expirado ou emitido para outra API |
Um token sem o escopo (scope) certo, ou seja, a lista do que ele pode fazer, recebe um 403 em vez de um 401. Guarde chaves e tokens em variáveis de ambiente ou em um gerenciador de segredos, nunca em um repositório de código.
Onde você pode encontrar um 401
- Painéis administrativos e servidores de teste protegidos pela caixa de login do navegador.
- Páginas da intranet da empresa que usam o login do Windows.
- APIs e webhooks depois de uma troca de chave ou da expiração de um token.
- Coleções do Postman ou do Bruno com um token desatualizado.
- Crawlers e scripts de monitoramento que chegam a páginas atrás de um login.
Erros comuns
- Tratar um 401 como um 403. Mais permissões não ajudam quando o token não chega.
- Repetir em loop, o que pode bloquear uma conta ou acionar um limite de taxa.
- Colar tokens reais em chamados, capturas de tela ou saídas de
curl -vcompartilhadas. - Exigir token para
OPTIONSno servidor. - Enviar 401 sem
WWW-Authenticate, que o padrão exige.
Guia de decisão
| A sua situação | O que fazer |
|---|---|
| O Chrome mostra “HTTP ERROR 401” | Faça login de novo e depois apague os cookies daquele site |
| O navegador pede a senha sem parar | Confirme as credenciais com quem deu o acesso a você |
| “Access is denied due to invalid credentials” | Use a sua conta de trabalho; administradores leem o código 401.x |
Nenhuma linha > Authorization: no curl -v | Corrija a variável ou o redirecionamento que descarta o cabeçalho |
error="invalid_token" | Obtenha um token novo e tente de novo uma vez |
| 407 em vez de 401 | Corrija as credenciais do proxy, não o login do site |
Perguntas frequentes
Por que recebo 401 Unauthorized no Postman?
Normalmente a requisição não envia o token que você imagina. Na aba Authorization da requisição, a lista Auth type mostra se ela usa a própria configuração ou a da coleção ou pasta (em Inherited). Se o token vem de uma variável, selecione o ambiente (environment) certo e confira se o token ainda é válido.
O que significa “Access is denied due to invalid credentials”?
É a página 401 padrão do IIS, o servidor web da Microsoft: ele não aceitou as credenciais que o seu navegador enviou ou não conseguiu fazer o seu login com o método configurado. Visitantes devem usar a conta de trabalho certa ou falar com a TI; administradores devem ler o número 401.x.
O erro 401 é culpa minha ou do site?
Normalmente é um problema de login que você mesmo resolve: uma sessão expirada, um cookie antigo, a conta salva errada. Se as credenciais certas continuam falhando com cookies novos, o login do site está com defeito.
Por que uma resposta 401 não tem corpo?
O padrão não exige corpo; exige o cabeçalho WWW-Authenticate, então leia os cabeçalhos. Um navegador que recebe um 401 vazio mostra a própria página; no nosso teste, o Chromium exibiu “Esta página não está funcionando”.
Uma VPN ou um proxy pode causar um erro 401?
Raramente de forma direta: um proxy que pede credenciais responde 407. Mas os dois mudam o seu endereço IP, e algumas APIs só aceitam uma chave vinda de endereços de uma lista, recusando os outros com 401 ou 403. Para uma API assim, os Proxies ISP mantêm o mesmo IP de saída.
O meu código deve repetir um 401 automaticamente?
Uma vez, e só depois de obter credenciais novas, como um token renovado. Se o mesmo desafio voltar, pare e reporte o erro.
Em resumo
Um 401 Unauthorized significa que o servidor não recebeu credenciais que aceite, e o WWW-Authenticate diz que tipo ele quer. Visitantes conferem o endereço, fazem login de novo e apagam os cookies do site. Desenvolvedores confirmam que o cabeçalho Authorization sai com o esquema certo e um token válido. Para trabalho com APIs que precisa de um IP de saída fixo ou de um túnel HTTPS, compare as opções na nossa página de proxies.




