Bir kullanıcı oturum açmadığında ve oturum açmayı gerektiren bir sayfaya erişmeye çalıştığında, oturum açma sayfasına yönlendirme için doğru HTTP durum kodu nedir?
Soruyorum çünkü W3C tarafından belirlenen 3xx yanıt kodlarından hiçbiri gereksinimleri karşılamıyor gibi görünüyor :
10.3.1 300 Çoklu Seçenek
İstenen kaynak, her biri kendi özel konumuna sahip olan bir dizi temsilden herhangi birine karşılık gelir ve aracıya dayalı görüşme bilgileri (bölüm 12), kullanıcının (veya kullanıcı aracısının) tercih edilen bir gösterimi seçebilmesi ve onu yeniden yönlendirebilmesi için sağlanır. o konuma istek.
Bir HEAD talebi olmadığı sürece, yanıt, kullanıcı veya kullanıcı aracısının en uygun olanı seçebileceği kaynak özelliklerinin ve konumların bir listesini içeren bir varlık içermelidir ÖNERİ. Varlık formatı, İçerik Türü başlık alanında verilen ortam türü tarafından belirlenir. Formatına ve yeteneklerine bağlı olarak
kullanıcı aracısı, en uygun seçimin seçimi otomatik olarak YAPILABİLİR. Bununla birlikte, bu spesifikasyon, bu tür otomatik seçim için herhangi bir standart tanımlamaz.
Sunucunun tercih edilen bir temsil seçeneği varsa, Konum alanına bu gösterim için belirli URI'yi dahil etmesi GEREKİR; kullanıcı aracıları, otomatik yeniden yönlendirme için Konum alanı değerini KULLANABİLİR. Aksi belirtilmedikçe bu yanıt önbelleğe alınabilir.
10.3.2 301 Kalıcı Olarak Taşındı
İstenen kaynağa yeni bir kalıcı URI atanmıştır ve bu kaynağa ileride yapılacak başvurular, döndürülen URI'lardan birini kullanmalıdır. Bağlantı düzenleme yeteneklerine sahip istemciler, istek URI'sine olan başvuruları, mümkün olduğunda, sunucu tarafından döndürülen yeni referanslardan bir veya daha fazlasına otomatik olarak yeniden bağlamalıdır. Aksi belirtilmedikçe bu yanıt önbelleğe alınabilir.
Yeni kalıcı URI, yanıttaki Konum alanı tarafından verilmelidir. İstek yöntemi HEAD olmadıkça, yanıtın varlığı yeni URI (lar) a köprü içeren kısa bir köprü metni notu İÇERMELİDİR.
GET veya HEAD dışındaki bir isteğe yanıt olarak 301 durum kodu alınırsa, kullanıcı aracısı, talebin gönderildiği koşulları değiştirebileceğinden, kullanıcı tarafından onaylanmadıkça isteği otomatik olarak yeniden yönlendirmemelidir * ZORUNLU *.
Note: When automatically redirecting a POST request after receiving a 301 status code, some existing HTTP/1.0 user agents will erroneously change it into a GET request.
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 etmesi GEREKİR. Bu yanıt, yalnızca Cache-Control veya Expires başlık alanıyla belirtilirse önbelleğe alınabilir.
Geçici URI'nin yanıttaki Konum alanı tarafından verilmesi GEREKİR. İstek yöntemi HEAD olmadıkça, yanıtın varlığı yeni URI (lar) a köprü içeren kısa bir köprü metni notu İÇERMELİDİR.
GET veya HEAD dışındaki bir isteğe yanıt olarak 302 durum kodu alınırsa, kullanıcı aracısı, talebin gönderildiği koşulları değiştirebileceğinden, kullanıcı tarafından onaylanmadıkça isteği otomatik olarak yeniden yönlendirmemelidir * ZORUNLU *.
Note: RFC 1945 and RFC 2068 specify that the client is not allowed to change the method on the redirected request. However, most existing user agent implementations treat 302 as if it
orijinal istek yönteminden bağımsız olarak Konum alanı değerinde bir GET gerçekleştiren bir 303 yanıtıydı. İstemciden ne tür bir tepki beklendiğini açık bir şekilde açıklığa kavuşturmak isteyen sunucular için 303 ve 307 durum kodları eklenmiştir.
10.3.4 303 Diğerlerini Gör
Talebe verilen yanıt farklı bir URI altında bulunabilir ve bu kaynakta bir GET yöntemi kullanılarak alınmalıdır. Bu yöntem, öncelikle POST ile etkinleştirilmiş bir komut dosyasının çıktısının kullanıcı aracısını seçilen bir kaynağa yeniden yönlendirmesine izin vermek için vardır. Yeni URI, başlangıçta talep edilen kaynak için bir ikame referans değildir. 303 yanıtı önbelleğe ALINMAMALIDIR, ancak ikinci (yeniden yönlendirilen) isteğe verilen yanıt önbelleğe alınabilir.
Farklı URI, yanıttaki Konum alanı tarafından VERİLMELİDİR. İstek yöntemi HEAD olmadıkça, yanıtın varlığı yeni URI (lar) a köprü içeren kısa bir köprü metni notu İÇERMELİDİR.
Note: Many pre-HTTP/1.1 user agents do not understand the 303 status. When interoperability with such clients is a concern, the 302 status code may be used instead, since most user agents react to a 302 response as described here for 303.
10.3.5 304 Değiştirilmedi
İstemci koşullu bir GET isteği gerçekleştirdiyse ve erişime izin veriliyorsa, ancak belge değiştirilmediyse, sunucu bu durum koduyla yanıt VERMELİDİR. 304 yanıtı bir mesaj gövdesi İÇERMEMELİDİR ve bu nedenle her zaman başlık alanlarından sonraki ilk boş satırla sonlandırılır.
Yanıt aşağıdaki başlık alanlarını İÇERMELİDİR:
- Date, unless its omission is required by section 14.18.1 If a
saatsiz kaynak sunucu bu kurallara uyar ve proxy'ler ve istemciler, herhangi bir yanıt olmadan alınan herhangi bir yanıta kendi Tarihlerini ekler ([RFC 2068], bölüm 14.19'da belirtildiği gibi), önbellekler doğru şekilde çalışacaktır.
- ETag and/or Content-Location, if the header would have been sent in a 200 response to the same request - Expires, Cache-Control, and/or Vary, if the field-value might differ from that sent in any previous response for the same variant If the conditional GET used a strong cache validator (see
Bölüm 13.3.3), yanıt diğer varlık başlıklarını İÇERMEMELİDİR. Aksi takdirde (yani koşullu GET zayıf bir doğrulayıcı kullandı), yanıt diğer varlık başlıklarını İÇERMEMELİDİR; bu, önbelleğe alınan varlık gövdeleri ile güncellenmiş başlıklar arasındaki tutarsızlıkları önler.
Bir 304 yanıtı, şu anda önbelleğe alınmamış bir varlığı gösteriyorsa, önbellek yanıtı göz ardı etmeli ve isteği koşulsuz olarak tekrar etmelidir * ZORUNLU *.
Bir önbellek, bir önbellek girişini güncellemek için alınan bir 304 yanıtı kullanıyorsa, önbellek, yanıtta verilen herhangi bir yeni alan değerini yansıtacak şekilde girişi güncelleştirmelidir * ZORUNLU *.
10.3.6 305 Proxy Kullan
İstenen kaynağa Konum alanı tarafından verilen proxy aracılığıyla ERİŞİLMELİDİR. Konum alanı, proxy'nin URI'sini verir. Alıcının bu tek isteği proxy aracılığıyla tekrar etmesi bekleniyor. 305 yanıt yalnızca kaynak sunucular tarafından oluşturulmalıdır * ZORUNLU *.
Note: RFC 2068 was not clear that 305 was intended to redirect a single request, and to be generated by origin servers only. Not observing these limitations has significant security consequences.
10.3.7 306 (Kullanılmamış)
306 durum kodu, spesifikasyonun önceki bir sürümünde kullanılmış, artık kullanılmamaktadır ve kod rezerve edilmiştir.
10.3.8 307 Geçici Yeniden Yönlendirme
İstenen kaynak geçici olarak farklı bir URI altında bulunuyor. Yeniden yönlendirme zaman zaman değiştirilebileceğinden, istemci gelecekteki istekler için İstek URI'sini kullanmaya devam ETMELİDİR. Bu yanıt, yalnızca Cache-Control veya Expires başlık alanıyla belirtilirse önbelleğe alınabilir.
Geçici URI'nin yanıttaki Konum alanı tarafından verilmesi GEREKİR. İstek yöntemi HEAD olmadıkça, yanıtın varlığı yeni URI (lar) a köprü içeren kısa bir hipermetin notu içermelidir, çünkü çoğu HTTP / 1.1 kullanıcı aracısı 307 durumunu anlamaz. Bu nedenle not, bir kullanıcının orijinal talebi yeni URI üzerinde tekrar etmesi için gerekli bilgileri içermelidir.
GET veya HEAD dışında bir isteğe yanıt olarak 307 durum kodu alınırsa, kullanıcı aracısı, talebin gönderildiği koşulları değiştirebileceğinden, kullanıcı tarafından onaylanmadıkça isteği otomatik olarak yeniden yönlendirmemelidir * ZORUNLU *.
Ben bulana kadar, şimdilik 302 kullanıyorum doğru cevabı.
Güncelleme ve sonuç:
HTTP 302, istemcilerle / tarayıcılarla en iyi uyumluluğa sahip olduğu bilindiğinden daha iyidir.