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!
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!
Respostas:
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).
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.
302
código de statusUma resposta com 302
é uma maneira comum de realizar o redirecionamento de URL. Junto com o 302
código de status, a resposta deve incluir um Location
cabeçalho com um URI diferente. Esse cabeçalho será analisado pelo agente do usuário e, em seguida, realizará o redirecionamento:
Os navegadores da Web podem mudar de POST
para GET
na solicitação subsequente. Se esse comportamento for indesejado, o 307
código de status (Redirecionamento temporário) pode ser usado.
É assim que o 302
código de status é definido no RFC 7231 :
O
302
có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
Location
campo de cabeçalho na resposta contendo uma referência de URI para os diferentes URI. O agente do usuário PODE usar oLocation
valor 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
POST
paraGET
para a solicitação subsequente. Se esse comportamento for indesejado, o307
có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.
A RFC 7231 define os seguintes códigos de status para redirecionamento:
O RFC 7238 foi criado para definir outro código de status para redirecionamento:
308
(Redirecionamento permanente)Consulte esta resposta para mais detalhes.
Location
header foi o que me ajudou). Acontece que eu estava ligando para um serviço com http
e eles mudaram para https
, tudo que recebi em resposta foi que 302
, assim que li o Location
cabeçalho aqui, vi a http/https
diferença. Obrigado!
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.
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:
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.
De acordo com as definições de código de status http, um 302 indica um redirecionamento (temporário). "O recurso solicitado reside temporariamente em um URI diferente"
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).
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.
O código HTTP 302 é para redirecionamento, consulte http://en.wikipedia.org/wiki/HTTP_302 .
Diz ao navegador que está lendo uma página para ir para outro lugar e carregar outra página. Seu uso é muito comum.
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.
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:
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 .
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.
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;)).