HTTP 301 ve 308 durum kodları arasındaki fark nedir?


138

HTTP 301ve 308durum kodları arasındaki fark nedir ?

  • 301 (Kalıcı Olarak Taşındı): Bu ve gelecekteki tüm istekler verilen URI'ye yönlendirilmelidir.

  • 308 (Kalıcı Yönlendirme): İstek ve gelecekteki tüm istekler başka bir URI kullanılarak tekrarlanmalıdır.

Benzer görünüyorlar.


Tools.ietf.org/html/rfc2616 ve tools.ietf.org/html/rfc6585'te 308 kodu yoktur , bu nedenle sorunun bu standart olmayan kodun mucidine yöneltilmesi gerekir.
KonstantinL

4
RFC 7538 spesifikasyonu var, bu nedenle gerçek HTTP kodu
Alexander Drobyshevsky

2
Pekala, tools.ietf.org/html/rfc7538 : Not: Bu durum kodu, istek yönteminin POST'tan GET'e değiştirilmesine izin vermemesi dışında 301'e benzer.
KonstantinL

4
RFC 2616'yı referans olarak kullanmayın. RFC'ler 7230-35 tarafından kullanımdan kaldırılmıştır.
cassiomolin

Yanıtlar:


258

Genel bir bakış 301, 302ve307

RFC 7231 , semantik ve HTTP / 1.1 protokol içeriği için akım referansı, tanımlar 301(Kalıcı taşındı) ve 302istek yöntemi değiştirilebilir sağlar (Bulunan) durum kodu POSTiçin GET. Bu tarifname, aynı zamanda tanımlar 307istek yöntemi değiştirilebilir izin vermez (Geçici Yönlendirmesi) durum kodu POSTiçin GET.

Aşağıda daha fazla ayrıntıya bakın:

6.4.2. 301 Kalıcı Olarak Taşındı

301(Taşındı Kalıcı) durum kodu hedef kaynağın yeni bir kalıcı URI atanmış ve bu kaynağa gelecekteki referanslar kapalı URI'lerinin birini kullanmak gerektiğini belirtir. [...]

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.

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. [...]

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.

6.4.7. 307 Geçici Yeniden Yönlendirme

307(Geçici Yeniden Yönlendirme) durum kodu, hedef kaynağın geçici olarak farklı bir URI altında bulunduğunu ve kullanıcı aracısının, bu URI'ye otomatik bir yeniden yönlendirme gerçekleştirirse istek yöntemini DEĞİŞTİRMEMESİ GEREKİR. Yeniden yönlendirme zaman içinde değişebileceğinden, istemcinin gelecekteki istekler için orijinal etkin istek URI'sini kullanmaya devam etmesi gerekir. [...]

Not: Bu durum kodu ile benzerdir 302(Found), ondan istek yöntemini değiştirerek izin vermediğini hariç POSTiçin GET. Bu belirtim 301(Kalıcı Olarak Taşındı) için eşdeğer bir karşılık tanımlamaz ( bununla birlikte RFC 7238 , 308 bu amaç için durum kodunu (Kalıcı Yönlendirme) tanımlar ).

İhtiyaç 308

RFC 7238 tanımlamak için yaratılmıştır 308benzerdir (Sürekli Yönlendirmesi) durum kodu, 301(Kalıcı taşındı), fakat istek yöntemi değiştirilebilir olanak sağlar etmez POSTiçin GET.

308Durum kodu artık ile tanımlanır RFC 7538 (eskitiliyor RFC 7238 ).

3. 308 Kalıcı Yönlendirme

308(Daimi Yönlendirmesi) durum kodu hedef kaynağın yeni bir kalıcı URI atanmış ve bu kaynağa gelecekteki referanslar kapalı URI'lerinin birini kullanmak gerektiğini belirtir. Bağlantı düzenleme yeteneklerine sahip istemciler, etkin istek URI'sine olan başvuruları, mümkün olduğunda, sunucu tarafından gönderilen yeni referanslardan birine veya daha fazlasına otomatik olarak yeniden bağlamalıdır. [...]

Not: Bu durum kodu ile benzerdir 301(Kalıcı olarak taşındı), ondan istek yöntemini değiştirerek izin vermediğini hariç POSTiçin GET.

Aşağıdakilere sahibiz:

                                                             +-----------+-----------+
                                                             | Permanent | Temporary |
+------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET        | 301       | 302       |
+------------------------------------------------------------+-----------+-----------+
| Doesn't allow changing the request method from POST to GET | 308       | 307       |
+------------------------------------------------------------+-----------+-----------+

En uygun durum kodunu seçmek

Michael Kropat , her durum için en iyi durum kodunu belirlemeye yardımcı olan bir dizi karar çizelgesi oluşturdu. İçin aşağıdaki bakın 2xxve 3xxdurum kodları:

2xx veya 3xx durum kodu seçme


3
Eğer biraz daha açıklama verebilir, soru 301 ve 308 arasındaki destinction hakkında özellikle gözönüne alındığında: "istek yöntemi değiştirilebilir olanak vermez POSTiçin GET" ? Bu, gönderilen bir formun işlenemeyeceği, ancak yeni bir formun serverd olabileceği ve ardından sonraki bir talepte gönderilebileceği anlamına mı gelir?
R. Schreurs

1
Bu taslak şartname ( tools.ietf.org/id/draft-hunt-http-rest-redirect-00.html ) ReSTful hizmetlerinin GET'ler için bile 308 kullanması gerektiğini önermektedir. "HTTP yeniden yönlendirme kodları 301-306, hizmet sağlayıcı istemcinin aslında bir kullanıcı aracısı olduğunun farkında olmadığı sürece KULLANILMAMALIDIR." Ancak bu sadece bir taslak. Kabul edilip edilmeyeceğinden / ne zaman kabul edileceğinden emin değilim.
Bruce Adams

1
Bu mesaj, -kesin-rehber-to-get-vs-posta , neden izin açıklık getirmektedir POST(güvenli) isteği edilecek değişti bir içine GETurl ekleyerek geçirilen bu verilerdeki güvensiz (- ve URL'ler kaydedilebilir - parolalar dahil) isteği bir güvenlik sorunu olabilir ve değiştirmenin güvenli olduğunu bilmediğiniz sürece genellikle kaçınılmalıdır . Bu günlerde genel olarak desteklendiği ve 301, 302 yerine 307, 308'in kullanılması tercih edildiği görülüyor. Ama doğrulamalısınız.
SherylHohman

1
Anımsatıcı 308, yana doğru sonsuzluk gibidir, bu nedenle Kalıcı yönlendirme ve ayrıca istek Yöntemi'ni asla değiştirmez - aynı zamanda kalıcı, sabit bir istek türüdür. Sonra, 307aşağıdaki 1adımdır - kalıcı / tutma isteği Yöntem (Al / Gönder), ancak geçici bir konuma yönlendirme: 7 - "sola dönüş" veya geçici sapma gibi görünür ve 7 de k'ye bakmaya benzer, bu nedenle istek yöntemi.
SherylHohman

Resume Incomplete'i söylemeyi unuttunuz .
Knu
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.