HTTP / 1.1 302 tam olarak ne anlama geliyor?


121

Bir zamanlar okuduğum bazı makaleler bunun (bir URI'den diğerine) atlama anlamına geldiğini söyledi, ancak aslında hiç atlama olmadığında bile bu "302" yi tespit ettim!


1
Wc3.org belgelerinde bununla ilgili bazı iyi bilgiler olabilir .
Copas

2
Çok dikkatli olun: example.com example.com ve example.com mantıksal olarak farklıdır ve tek bir URL üzerinden erişmek isteyen bir site bunu başarmak için birinden diğerine yönlendirme yapabilir. Elbette, 302 yeniden yönlendirmeleri bunun için kötü bir seçimdir ... ancak benzer şekilde ince varyasyonlar görmüş olabilirsiniz.
Shog9

Bu siteyi yönlendirin ( hostingpill.com/http-302-error )
virusarthak

Yanıtlar:


74

302 yönlendirmesi, sayfanın geçici olarak taşındığı anlamına gelirken, 301 kalıcı olarak taşındığı anlamına gelir.

301'ler SEO değeri için iyidir, 302'ler ise müşterilere orijinal URL'nin değerini unutmaları talimatını verdiği için değil, 302 orijinalin değerini korur ve bu nedenle, mantıksal olarak farklı iki URL oluşturarak değeri potansiyel olarak düşürebilir. her biri aynı içeriği üretir (arama motorları bunları iki isimli tek bir kaynak yerine farklı kopyalar olarak görür).


58

Bu soru uzun zaman önce, RFC 2616 hala takılırken sorulmuştu. Bu soruya verilen bazı cevaplar, günümüzde artık geçerli olmayan böyle bir belgeye dayanmaktadır. Yazma sırasında IETF HTTP ve QUIC Çalışma Gruplarına eş başkanlık eden Mark Nottingham'dan alıntı yaparak :

RFC2616'yı kullanmayın . Sabit sürücülerinizden, yer imlerinizden silin ve yazdırılan kopyaları yazın (veya sorumlu bir şekilde geri dönüştürün).

Eski RFC 2616, birlikte HTTP / 1.1 protokolünü tanımlayan aşağıdaki belgelerle değiştirilmiştir:

Bu nedenle , HTTP / 1.1 durum kodları için mevcut referans olan RFC 7231'e dayalı bir cevap sağlamayı hedefliyorum .

302durum kodu

İle yanıt, 302URL yeniden yönlendirmesini gerçekleştirmenin yaygın bir yoludur. İle birlikte 302durum kodu, yanıt bir içermelidir Locationfarklı bir URI ile başlığını. Bu tür bir başlık kullanıcı aracısı tarafından ayrıştırılacak ve ardından yeniden yönlendirmeyi gerçekleştirecektir:


Yeniden yönlendirme örneği


Web tarayıcıları değişebilir POSTiçin GETsonraki isteği. Bu davranış istenmiyorsa, 307bunun yerine (Geçici Yeniden Yönlendirme) durum kodu kullanılabilir.

Bu nasıl 302durum kodu tanımlanır 7231 RFC :

6.4.3. 302 Bulundu

302(Bulunan) durum kodu hedef kaynağın farklı bir URI altında geçici olarak ikamet gösterir. Yeniden yönlendirme zaman zaman değiştirilebileceğinden, istemcinin gelecekteki istekler için etkin istek URI'sini kullanmaya devam etmesi gerekir.

Sunucu Location, farklı URI için bir URI başvurusu içeren yanıtta bir başlık alanı oluşturmalıdır . Kullanıcı aracısı Location, otomatik yeniden yönlendirme için alan değerini kullanabilir SEÇİMLİK . Sunucunun yanıt yükü genellikle, farklı URI'lara köprü içeren kısa bir köprü notu içerir.

Not: Tarihsel nedenlerden dolayı, bir kullanıcı arayüzü gelen istek yöntem değişebilir POSTiçin GETsonraki isteği. Bu davranış istenmiyorsa, 307bunun yerine (Geçici Yeniden Yönlendirme) durum kodu kullanılabilir.

Mozilla'dan MDN web belgelerine göre , tipik bir kullanım durumu 302şudur:

Web sayfası, öngörülemeyen nedenlerle geçici olarak kullanılamamaktadır. Bu şekilde, arama motorları bağlantılarını güncellemez.

Yönlendirme için diğer durum kodları

RFC 7231 tanımlar yönlendirme için aşağıdaki durum kodları:

  • 301 (Kalıcı Olarak Taşındı)
  • 302 (Bulundu)
  • 307 (Geçici Yeniden Yönlendirme)

RFC 7238 yönlendirme için başka durum kodu tanımlamak için oluşturuldu:

  • 308 (Kalıcı Yönlendirme)

Daha fazla ayrıntı için bu yanıta bakın .


2
iki günlük acım senin için çok fazla ( Locationbaşlık bana yardımcı olan şeydi). Görünüşe göre bir servisi arıyordum httpve onlar taşındılar https, yanıt olarak aldığım tek şey 302, Locationburada başlığı okur okur okumaz http/httpsfarkı gördüm . Teşekkür ederim!
Eugene

Bu hatada da aynı sebebe sahibim. Javascript'im yanlış https konumuna işaret etti ve bu nedenle yeniden yönlendirme başarısız oldu. Yorum için teşekkürler.
Maksimum

25

HTTP 301 ve 302 yönlendirmelerine bakmanın basit bir yolu şudur:

" Http://sample.com/sample " için bir yer işaretiniz olduğunu varsayalım . Oraya gitmek için bir tarayıcı kullanıyorsunuz.

Bu noktada farklı bir URL'ye 302 yönlendirmesi, yer işaretinizi " http://sample.com/sample " de tutmanız gerektiği anlamına gelir . Bunun nedeni, hedef URL'nin gelecekte değişebilmesidir.

Farklı bir URL'ye 301 yönlendirmesi, kalıcı bir yönlendirme olduğu için yer işaretinizin yeni URL'yi gösterecek şekilde değişmesi gerektiği anlamına gelir.


9

Gönderen RFC 2616 (Köprü Metni Aktarım Protokolü Şartname) :

10.3.3 302 Bulunan

   İstenen kaynak geçici olarak farklı bir URI altında bulunuyor.
   Yeniden yönlendirme zaman zaman değiştirilebileceğinden, istemcinin
   Gelecekteki istekler için İstek URI'sini kullanmaya devam edin. Bu cevap
   yalnızca Cache-Control veya Expires başlığı ile belirtilirse önbelleğe alınabilir
   alan.

   Geçici URI, aşağıdaki Konum alanı tarafından verilmelidir.
   tepki. İstek yöntemi HEAD olmadığı sürece,
   yanıtı, kısa bir bağlantı notu içermelidir.
   yeni URI (ler).

Kaynak:

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


6

Gönderen Vikipedi :

HTTP yanıt durum kodu 302 Bulundu, yeniden yönlendirme gerçekleştirmenin en yaygın yoludur. Standartla çelişen bir endüstriyel uygulama örneğidir.



5

302, kaynak konumu değişikliğini gösteren bir yanıttır - "Bulundu".

Kaynağın şimdi konumlandırılması gereken url, yanıt 'Konum' başlığında olmalıdır.

"Atlama", istekte bulunan istemci tarafından yapılmalıdır (yanıt Konum başlığı alanında kaynak url'sine yeni bir istekte bulunun).


5

SEO açısından, 301 ve 302'nin ikisi de iyidir, duruma bağlıdır,

Yalnızca bir sürüm döndürülebiliyorsa (yani, diğeri ona yeniden yönlendiriliyorsa), bu harika! Bu davranış, yinelenen içeriği azalttığı için faydalıdır. Sondaki eğik çizgi URL'lerine yönlendirmelerin olduğu özel durumda, arama sonuçlarımız, yönlendirmenin 301 veya 302 olmasına bakılmaksızın, URL'nin sürümünü büyük olasılıkla 200 yanıt koduyla (çoğunlukla sondaki eğik çizgi URL'si) gösterecektir.



1

Göre RFC 1945 / Köprü Metni Aktarım Protokolü - 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
  • 302 kodu, geçici bir yeniden yönlendirmeyi gösterir .
  • 301 yönlendirmesinden ayıran en dikkat çekici özelliklerden biri, 302 yönlendirmelerinde SEO'nun gücünün yeni bir URL'ye aktarılmamasıdır.
  • Bunun nedeni, bu yeniden yönlendirmenin, içeriği kesin olmayacak bir sayfaya yeniden yönlendirmeye ihtiyaç duyulduğunda kullanılmak üzere tasarlanmış olmasıdır. Böylece, yönlendirme ortadan kalktığında, orijinal sayfa Google arama motorundaki konumunu kaybetmiş olmayacaktır.

ÖRNEK: - Kendimizi bir 302 yönlendirmesine ihtiyaç duyduğumuz pek yaygın olmasa da, bu seçenek bazı durumlarda çok yararlı olabilir. Bunlar en sık görülen vakalardır:

  • Bir sayfada uygunsuz içerik olduğunu fark ettiğimizde. Sorunu çözerken kullanıcıyı ilgisini çekebilecek başka bir sayfaya yönlendirebiliriz.
  • Web sitemize yapılan bir saldırının sayfalardan herhangi birinin geri yüklenmesini gerektirmesi durumunda, bu yönlendirme, vakayı en aza indirmemize yardımcı olabilir.

Yeniden yönlendirme 302, belirli bir URL'yi ziyaret edenlere sayfanın geçici olarak taşındığını söyleyerek onları doğrudan yeni konuma yönlendiren bir koddur.

  • Başka bir deyişle, Google robotları veya diğer arama motorları belirli bir sayfayı yüklemek istediğinde yönlendirme 302 etkinleştirilir. O anda, bu yönlendirme sayesinde, sunucu yeni bir URL'yi belirten otomatik bir yanıt döndürür.

  • Bu şekilde hem arama motorları hem de kullanıcılar için hatalar ve rahatsızlıklar önlenir ve sorunsuz gezinme garanti edilir.

Daha ayrıntılı bilgi için bu bakınız Madde .


0

Bir 302 durum kodu, istenen kaynağın geçici olarak farklı bir URI'ye taşındığını gösteren HTTP yanıt durum kodudur. Konum veya geçerli yeniden yönlendirme yönergesi gelecekte değişebileceğinden, 302 Bulundu yanıt kodunu alan bir istemci, gelecekteki istekler için orijinal URI'yi kullanmaya devam etmelidir.

Bu durum koduna sahip bir HTTP yanıtı, ek olarak Konum başlık alanında bir URL sağlayacaktır. Bu, kullanıcı aracısına (örneğin, bir web tarayıcısı) konum alanında belirtilen yeni URL'ye ikinci, aksi halde aynı olan bir talepte bulunma davetidir. Sonuç, yeni URL'ye bir yeniden yönlendirmedir.


0

Adlandırmayı merak eden herhangi biri için, muhtemelen "Bulundu" olarak adlandırıldığını ekleyeceğim çünkü kullanıcının almayı düşündüğü ana kaynak (örneğin, özel bir web sayfası) o anda mevcut değil (örneğin, kullanıcı henüz kimliğini kanıtlamamıştır), bunun yerine sunucu, kullanıcının alabileceği yeni bir kaynak bulmuştur (en yaygın kullanım durumunda bu bir oturum açma sayfasıdır).

Ayrıca saklambaç tarzında "kaybolup bulun", yani 302 statüsü altında kaybedilen bir kaynak yalnızca geçici olarak kaybedilir, sonsuza kadar kaybolmaması gerekir (bir oyuncunun bazı kötü niyetleri yoksa;)).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.