Pergunta

Então, se você olhar para o Lista de códigos de status HTTP, provavelmente há vários deles que seriam úteis durante a programação.O servidor pode lidar com algumas coisas, como protocolos, mas muitos desses códigos podem ser úteis para informar ao navegador o status real da página.

Então, minha pergunta é com qual desses códigos de status devemos nos preocupar?Quais devemos verificar para enviar e quais provavelmente nunca serão usados ​​na programação regular de aplicativos.

Se você estiver curioso, isso está no escopo da programação PHP, mas provavelmente também se aplicaria a outras linguagens.

Foi útil?

Solução

Muitos deles são intrinsecamente úteis com o uso de API estilo REST.Por exemplo:

  • 200 (OK): Você pediu um recurso.Aqui está!

  • 201 (criado): Você me pediu para criar um novo recurso.Eu fiz!Aqui é onde você pode me pedir na próxima vez.

  • 202 (Aceito): Você me pediu para fazer algo, mas vai demorar um pouco, então não espere.É aqui que você pode verificar o status.

  • 300 (múltiplas escolhas): Você pediu algo, mas não foi específico o suficiente.Qual destes você quis dizer?

  • 301 mudou-se permanentemente): Você pediu algo, mas agora está em outro lugar.Foi aqui que aconteceu.

  • 302 (encontrado): Você pediu algo, mas no momento está em outro lugar.Aqui está.

  • 304 (não modificado): Você pediu algo antes disso, mas não mudou desde a última vez que você me pediu.

  • 400 (solicitação incorreta): Algo está errado sobre o que você me pediu para fazer.Corrija o que você disse e tente novamente.

  • 401 não autorizado): Preciso que você se identifique antes de concluir esta solicitação.[Observação:Este é um dos cabeçalhos mais infelizmente nomeados.Realmente deveria ter um título Não autenticado;403 é mais parecido Não autorizado.]

  • 403 (Proibido): Você pediu algo que não pode ter.

  • 404 não encontrado): Você solicitou um recurso, mas não há nenhum que corresponda à sua descrição.

  • 500 (erro do servidor): Algo deu errado, então não posso lhe dar o que você pediu agora.Desculpe por isso.

  • 501 (não implementado): Não apoio esse tipo de pedido no momento.

  • 503 serviço indisponível): Não estou conseguindo responder às solicitações no momento.

Outras dicas

Para ser mais preciso, estes são apenas códigos de status HTTP, não cabeçalhos HTTP.Os cabeçalhos transmitem muitas coisas e são enviados tanto pelo cliente quanto pelo servidor e estão além do escopo desta resposta.

Um dos cabeçalhos HTTP, nomeadamente o primeiro enviado pelo servidor ao cliente, tem a seguinte aparência:

HTTP/1.x 200 OK

ou:

HTTP/1.x 404 Not Found

O número que aparece após o identificador do protocolo HTTP/1.x é o que chamamos de código de status com a mensagem de status correspondente enviada depois dele.Aqui estão os códigos de status que tive que usar em meus dias de programação PHP:

  • 200 OK é de longe o mais comum.Significa que tudo funcionou bem e que você está respondendo com conteúdo.
  • 404 Not Found é enviado automaticamente pelo servidor sob certas condições, principalmente quando a solicitação leva à execução de um script que não pode ser encontrado no servidor.Às vezes, especialmente se você estiver escrevendo estruturas que lidam com URIs de uma maneira especial, você desejará definir manualmente um código de status 404.Por exemplo, se você tiver um script de execução central index.php enquanto você roteia todas as solicitações usando .htaccess ou suas configurações do Apache, o Apache quase nunca retornará um 404 por conta própria porque, afinal, ele encontrou index.php.Mas, claramente, ainda haverá alguns URIs que você deseja comunicar e que não levam a lugar nenhum, para os quais você desejará enviar seu próprio cabeçalho de status 404.
  • 301 Moved Permanently e 302 Found (mais comumente referido como 'Movido Temporariamente').Esses dois instruem o navegador a procurar um Location cabeçalho e redirecionar o usuário para o URL especificado lá.A maioria dos frameworks PHP tem suas próprias funções para redirecionamentos HTTP, que também lidam com os cabeçalhos.O redirecionamento PHP nativo header('Location: http://www.google.com'); altera automaticamente o status HTTP para 302.Nunca entendi a fundo a diferença entre 302 e 301, mas li que 301 é muito melhor para Search Engine Optimization, então tento usar sempre 301.Talvez alguém possa esclarecer qual é a diferença exata.Uma coisa a ter cuidado é evitar colocar um status 301/302 e um cabeçalho Location em uma página destinada a receber dados POST.Eu tive alguns problemas com isso no passado.
  • 304 Not Modified geralmente é enviado automaticamente dependendo das configurações do Apache.A maioria dos navegadores, em condições normais, inclui a data/hora em que o item solicitado foi armazenado em cache no computador do usuário.ETags e outros cabeçalhos são usados ​​para essa finalidade.Se o Apache julgar que o arquivo correspondente do servidor não mudou desde então, o Apache frequentemente enviará um 304 sem conteúdo, que apenas informa ao cliente para usar a versão em cache.
  • 401 Unauthorized é enviado quando um usuário tenta acessar uma seção restrita do site.Existem alguns recursos HTML antigos e tecnologias de servidor que suportam prompts de nome de usuário/senha nativos, que enviavam códigos de status 401 quando os prompts eram cancelados ou não autorizados.A maioria das pessoas hoje em dia escreve suas próprias implementações de PHP para autenticação de usuários e gerenciamento de direitos, portanto o Apache não costuma enviar 401s por conta própria.Você pode enviar o status manualmente para indicar que são necessários mais direitos para acessar a página.
  • 400 Bad Request é enviado pelo Apache se receber uma solicitação que não consegue entender.Normalmente você não precisa se preocupar em enviá-lo manualmente.
  • 403 Forbidden é usado por algumas pessoas quando os usuários estão tentando acessar uma área que não conseguiriam acessar, mesmo com autenticação adequada, talvez devido a restrições geográficas, de IP ou de proibição.Eu não uso sozinho, apenas uso 401 e 404 para preencher.
  • 5xx.A série 500 são os códigos que você realmente não vê como desenvolvedor.Isso significa que seu código ou servidor fez algo ruim.Se você tiver um servidor ou sistema de balanceamento de carga de calibre suficiente e não tiver erros em seu código, você nunca verá a série 500.

Bem, esses são códigos de status, não cabeçalhos, mas qualquer um deles pode ser útil (embora seja improvável que a série 5xx seja).

Presumo que você esteja falando sobre o uso de cabeçalhos para servir arquivos ou fornecer um serviço da web RESTful.

Você estaria atrás de códigos de status, em vez de cabeçalhos.Os que costumo usar são:

200 OK
301 Moved Permanently
302 Found (temporary redirect)
400 Bad Request
403 Forbidden
404 Not found
500 Internal Server Error

Claro, para webservices RESTful você pode alterar o texto para ser mais descritivo, bem como fornecer uma descrição no corpo.

Depois há:

418 I'm a teapot

Examinando rapidamente essa lista (de códigos de status), aqui estão aqueles que eu uso com frequência (Estou fazendo desenvolvimento web em PHP como meu trabalho) :

  • 200 OK :quase sempre enviado pelo Apache
  • 301 Moved Permanently :geralmente enviado por mim (ou pelo Apache, ao usar regras de reescrita)
  • 302 Found :geralmente enviado por mim (ou pelo Apache, ao usar regras de reescrita)
  • 304 Not Modified :geralmente enviado pelo Apache (ou um proxy reverso na frente dele)
  • 401 Unauthorized :geralmente enviado pelo Apache
  • 403 Forbidden :geralmente enviado pelo Apache
  • 404 Not Found :enviado por mim e pelo Apache - dependendo das situações
  • 410 Gone :geralmente enviado por mim
  • 500 Internal Server Error :enviado por Apache e por mim;esse é o que eu geralmente uso quando há um erro "técnico" - mesmo que isso nunca aconteça ^^

E aqui estão aqueles que eu poderia usar (especialmente se estiver fazendo REST) :

Os que mais usei são:

  • 301 - Movido permanentemente - Use se o recurso for movido permanentemente para o novo URL.
  • 302 - Movido temporariamente - Use isto para redirecionar quando você não puder ter um redirecionamento permanente.
  • 404 não encontrado.Seu servidor deve estar configurado para servir isso para URLs inválidos.Você deve monitorar isso em seus logs – muitos 404s são um sinal de um push incorreto.
  • 500 - Erro interno do servidor.Seu servidor deve estar configurado para enviá-los corretamente quando houver erros.Você deve monitorar erros 5xx em seus logs.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top