O que HTTP / 1.1 302 significa exatamente?


120

Um artigo que li uma vez disse que significa saltar (de um URI para outro), mas detectei este "302" mesmo quando na verdade não havia nenhum salto!


1
Pode haver algumas boas informações sobre isso aqui na documentação do wc3.org .
Copas de

2
Preste muita atenção: example.com example.com e example.com são logicamente distintos, e um site que deseja ser acessado por meio de um único URL pode redirecionar de um para outro para conseguir isso. Obviamente, redirecionamentos 302 são uma escolha ruim para isso ... mas você pode muito bem ter visto variações sutis semelhantes.
Shog9

Respostas:


74

Um redirecionamento 302 significa que a página foi movida temporariamente, enquanto um 301 significa que ela foi movida permanentemente.

301s são bons para o valor de SEO, enquanto 302s não são, porque 301s instruem os clientes a esquecer o valor do URL original, enquanto o 302 mantém o valor do original e pode, assim, reduzir potencialmente o valor criando dois URLs logicamente distintos que cada um produz o mesmo conteúdo (os mecanismos de pesquisa os veem como duplicatas distintas, em vez de um único recurso com dois nomes).


58

Esta pergunta foi feita há muito tempo, enquanto a RFC 2616 ainda estava por perto. Algumas respostas a essa pergunta estão baseadas neste documento, que não é mais relevante nos dias de hoje. Citando Mark Nottingham que, no momento da redação, co-presidia os grupos de trabalho IETF HTTP e QUIC:

Não use RFC2616 . Exclua-o de seus discos rígidos, marcadores e queime (ou recicle com responsabilidade) todas as cópias impressas.

O antigo RFC 2616 foi suplantado pelos seguintes documentos que, juntos, definem o protocolo HTTP / 1.1:

Portanto, pretendo fornecer uma resposta com base na RFC 7231 que é a referência atual para códigos de status HTTP / 1.1.

O 302código de status

Uma resposta com 302é uma maneira comum de realizar o redirecionamento de URL. Junto com o 302código de status, a resposta deve incluir um Locationcabeçalho com um URI diferente. Esse cabeçalho será analisado pelo agente do usuário e, em seguida, realizará o redirecionamento:


Exemplo de redirecionamento


Os navegadores da Web podem mudar de POSTpara GETna solicitação subsequente. Se esse comportamento for indesejado, o 307código de status (Redirecionamento temporário) pode ser usado.

É assim que o 302código de status é definido no RFC 7231 :

6.4.3. 302 encontrados

O 302código de status (encontrado) indica que o recurso de destino reside temporariamente em um URI diferente. Como o redirecionamento pode ser alterado ocasionalmente, o cliente deve continuar a usar o URI de solicitação efetivo para solicitações futuras.

O servidor DEVE gerar um Locationcampo de cabeçalho na resposta contendo uma referência de URI para os diferentes URI. O agente do usuário PODE usar o Locationvalor do campo para redirecionamento automático. A carga útil de resposta do servidor geralmente contém uma pequena nota de hipertexto com um hiperlink para os diferentes URIs.

Nota: Por razões históricas, um agente do usuário PODE alterar o método de solicitação de POSTpara GETpara a solicitação subsequente. Se esse comportamento for indesejado, o 307código de status (Redirecionamento temporário) pode ser usado.

De acordo com os documentos da web MDN da Mozilla , um caso de uso típico para 302é:

A página da Web está temporariamente indisponível por motivos que não foram imprevistos. Dessa forma, os motores de busca não atualizam seus links.

Outros códigos de status para redirecionamento

A RFC 7231 define os seguintes códigos de status para redirecionamento:

  • 301 (Movido Permanentemente)
  • 302 (Encontrado)
  • 307 (Redirecionamento temporário)

O RFC 7238 foi criado para definir outro código de status para redirecionamento:

  • 308 (Redirecionamento permanente)

Consulte esta resposta para mais detalhes.


2
bem minha dor de dois dias acabou com você ( Locationheader foi o que me ajudou). Acontece que eu estava ligando para um serviço com httpe eles mudaram para https, tudo que recebi em resposta foi que 302, assim que li o Locationcabeçalho aqui, vi a http/httpsdiferença. Obrigado!
Eugene

Eu tenho o mesmo motivo para esse erro. Meu Javascript apontou para o local https incorreto e, portanto, o redirecionamento falhou. Obrigado pelo comentário.
Máx.

25

Uma maneira simples de ver os redirecionamentos HTTP 301 vs. 302 é:

Suponha que você tenha um favorito para " http://sample.com/sample ". Você usa um navegador para ir até lá.

Um redirecionamento 302 para um URL diferente neste ponto significaria que você deve manter seu favorito em " http://sample.com/sample ". Isso ocorre porque o URL de destino pode mudar no futuro.

Um redirecionamento 301 para um URL diferente significaria que seu favorito deveria mudar para apontar para o novo URL, pois é um redirecionamento permanente.


9

Do RFC 2616 (a especificação do protocolo de transferência de hipertexto) :

10.3.3 302 encontrados

   O recurso solicitado reside temporariamente em um URI diferente.
   Como o redirecionamento pode ser alterado ocasionalmente, o cliente DEVE
   continue a usar o Request-URI para solicitações futuras. Esta resposta
   só pode ser armazenado em cache se indicado por um cabeçalho Cache-Control ou Expires
   campo.

   O URI temporário DEVE ser fornecido pelo campo Location no
   resposta. A menos que o método de solicitação seja HEAD, a entidade do
   a resposta DEVE conter uma pequena nota de hipertexto com um hiperlink para
   o (s) novo (s) URI (s).

Fonte:

http://www.ietf.org/rfc/rfc2616.txt


6

Da Wikipedia :

O código de status de resposta HTTP 302 encontrado é a maneira mais comum de realizar um redirecionamento. É um exemplo de prática industrial que contradiz o padrão.



5

302 é uma resposta que indica mudança de localização do recurso - "Encontrado".

O url onde o recurso deve estar localizado agora deve estar no cabeçalho 'Local' da resposta.

O "salto" deve ser feito pelo cliente solicitante (faça uma nova solicitação ao url do recurso no campo do cabeçalho Location de resposta).


5

Em termos de SEO, 301 e 302 são bons, depende da situação,

Se apenas uma versão puder ser retornada (ou seja, a outra redireciona para ela), ótimo! Esse comportamento é benéfico porque reduz o conteúdo duplicado. No caso específico de redirecionamentos para URLs de barra final, nossos resultados de pesquisa provavelmente mostrarão a versão do URL com o código de resposta 200 (geralmente o URL de barra final) - independentemente de o redirecionamento ser 301 ou 302.



1

De acordo com RFC 1945 / Hypertext Transfer Protocol - HTTP / 1.0 :

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.

0
  • O código 302 indica um redirecionamento temporário .
  • Uma das características mais notáveis ​​que o diferenciam de um redirecionamento 301 é que, no caso de redirecionamentos 302, a força do SEO não é transferida para uma nova URL.
  • Isso porque esse redirecionamento foi projetado para ser utilizado quando houver a necessidade de redirecionar o conteúdo para uma página que não seja a definitiva. Assim, eliminado o redirecionamento, a página original não terá perdido seu posicionamento no mecanismo de busca Google.

EXEMPLO: - Embora não seja muito comum precisarmos de um redirecionamento 302, esta opção pode ser muito útil em alguns casos. Estes são os casos mais frequentes:

  • Quando percebemos que há algum conteúdo impróprio em uma página. Enquanto resolvemos o problema, podemos redirecionar o usuário para outra página que pode ser de seu interesse.
  • No caso de um ataque ao nosso site exigir a restauração de qualquer uma das páginas, este redirecionamento pode nos ajudar a minimizar a incidência.

Um redirecionamento 302 é um código que informa aos visitantes de um URL específico que a página foi movida temporariamente, direcionando-os diretamente para o novo local.

  • Em outras palavras, o redirecionamento 302 é ativado quando os robôs do Google ou outros motores de busca solicitam o carregamento de uma página específica. Nesse momento, graças a este redirecionamento, o servidor retorna uma resposta automática indicando um novo URL.

  • Desta forma, erros e incômodos são evitados tanto para os motores de busca quanto para os usuários, garantindo uma navegação tranquila.

Para obter mais detalhes, consulte este artigo .


0

Um código de status 302 é o código de status de resposta HTTP que indica que o recurso solicitado foi temporariamente movido para um URI diferente. Como o local ou a diretiva de redirecionamento atual podem ser alterados no futuro, um cliente que recebe um código de resposta 302 encontrado deve continuar a usar o URI original para solicitações futuras.

Uma resposta HTTP com este código de status fornecerá adicionalmente um URL no campo de cabeçalho Location. Este é um convite ao agente do usuário (por exemplo, um navegador da web) para fazer uma segunda solicitação, de outra forma idêntica, para a nova URL especificada no campo de localização. O resultado final é um redirecionamento para o novo URL.


0

Para qualquer um que esteja curioso sobre a nomenclatura, vou apenas acrescentar que provavelmente se chama "Encontrado" porque o recurso principal (por exemplo, uma página da web privada) que o usuário pretende receber não está disponível naquele momento (por exemplo, o usuário ainda não provou sua identidade), então, em vez disso, o servidor encontrou um novo recurso que o usuário pode receber (que é uma página de login no caso de uso mais comum).

Também está "se perdendo e achando" na forma de esconde-esconde, o que significa que um recurso perdido sob o status 302 é perdido apenas temporariamente , não deve ser perdido para sempre (a menos que o jogador tenha más intenções;)).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.