Bu yanıtı yazdığım sırada, bu soruya kabul edilen cevap , Expires
değeri geçmişte olan yeni bir çerez alırken tarayıcıların bir çerezi silmesi gerekmediğini belirtir . Bu iddia yanlıştır. Expires
Geçmişte olma ayarı , bir çerezi silmenin standart, spesifikasyona uygun yoludur ve spec tarafından saygı duyulması için kullanıcı aracıları gereklidir.
Expires
Bir çerez silmek için geçmişte bir öznitelik kullanmak doğrudur ve şartname tarafından dikte edilen çerezleri kaldırmanın yoludur. RFC 6255'in örnekler bölümünde şunlar bulunur :
Son olarak, bir çerezi kaldırmak için sunucu, son kullanma tarihi geçmiş bir Set-Cookie başlığı döndürür. Sunucu, yalnızca Set-Cookie üstbilgisindeki Yol ve Etki Alanı özniteliği, çerez oluşturulduğunda kullanılan değerlerle eşleşirse çerezin kaldırılmasında başarılı olacaktır.
User Agent Gereksinimler bölümü birlikte kullanıcı aracısı olan son kullanma tarihi geçmiş bir aynı adla yeni bir çerez alırsa bir çerez hemen tamamen yok edilir gerektiğini etkisi aşağıdaki gereksinimleri içerir
[Yeni bir çerez alırken] çerez deposu, yeni oluşturulan çerezle aynı ada, alana ve yola sahip bir çerez içeriyorsa:
- ...
- ...
- Yeni oluşturulan çerezin oluşturulma zamanını, eski çerezin oluşturulma zamanına uyacak şekilde güncelleyin.
- Eski çerezi çerez deposundan kaldırın.
Yeni oluşturulan çerezi, çerez deposuna ekleyin.
Çerezin geçmişte bir son kullanma tarihi varsa, çerezin süresi dolmuş demektir.
Herhangi bir zamanda, çerez deposunda süresi dolmuş bir çerez varsa, kullanıcı aracısının süresi dolmuş tüm çerezleri çerez deposundan çıkarması GEREKİR.
Yukarıdaki 11-3, 11-4 ve 12. puanlar, aynı ada, alana ve yola sahip yeni bir çerez alındığında eski çerezin kaldırılması ve yeni çerezle değiştirilmesi gerektiği anlamına gelir. Son olarak, süresi dolmuş çerezlerle ilgili aşağıdaki nokta, bundan sonra, yeni çerezin de derhal boşaltılması gerektiğini belirtir . Spec, bu noktada tarayıcılara kıpır kıpır oda sunmuyor; bir tarayıcı kullanıcıya, çerezin sona erme tarihini devre dışı bırakma seçeneği sunsaydı, kabul edilen yanıt bazı tarayıcıların yaptığı gibi, o zaman bu özellik ihlal edilir. (Böyle bir özelliğin de çok az kullanımı olacaktır ve bildiğim kadarıyla herhangi bir tarayıcıda mevcut değildir.)
Öyleyse, bu sorunun OP'si neden bu yaklaşımın başarısız olduğunu gözlemledi? Ben davranışını kontrol etmek için Internet Explorer bir kopyasını tozunu olmasa da, ben OP Expires
değeri hatalı olduğundan şüpheleniyorum ! Bu değeri kullandılar:
expires=Thu, Jan 01 1970 00:00:00 UTC;
Ancak bu sözdizimsel olarak iki şekilde geçersizdir.
Özelliğin sözdizimi bölümü , Expires
özniteliğin değerinin bir
[RFC2616], Bölüm 3.3.1'de tanımlanan rfc1123 -tarihi
Yukarıdaki ikinci bağlantıyı takiben, bu formata örnek olarak verilmiştir:
Sun, 06 Nov 1994 08:49:37 GMT
ve sözdizimi tanımının ...
tarihlerin soru soran tarafından kullanılan ay gün yıl biçiminde değil, gün ay yıl biçiminde yazılmasını gerektirir .
Özellikle, rfc1123-date
aşağıdaki gibi tanımlar :
rfc1123-date = wkday "," SP date1 SP time SP "GMT"
ve şöyle tanımlar date1
:
date1 = 2DIGIT SP month SP 4DIGIT
; day month year (e.g., 02 Jun 1982)
ve
UTC
saat dilimi olarak izin vermez .
Spesifikasyon, bu formatta hangi saat dilimi ofsetlerinin kabul edilebilir olduğuna ilişkin aşağıdaki ifadeyi içerir:
Tüm HTTP tarih / zaman damgaları istisnasız Greenwich Ortalama Saati'nde (GMT) temsil edilmelidir.
Bu datetime formatında orijinal spec derinliklerine inin ise Dahası, biz de ilk spec bulmak https://tools.ietf.org/html/rfc822 , sözdizimi bölüm listeleri "UT" ( "evrensel saati" anlamına ) olası bir değer olarak, ancak does not listesi değildir geçerli olarak UTC (eşgüdümlü Evrensel Zaman). Bildiğim kadarıyla, bu tarih biçiminde "UTC" kullanmak hiç geçerli değildi; biçim ilk kez 1982'de belirtildiğinde geçerli bir değer değildi ve HTTP spesifikasyonu "GMT" dışındaki tüm "bölge" değerlerinin kullanımını yasaklayarak biçimin daha kısıtlayıcı bir sürümünü benimsedi .
Buradaki soru asker yerine kullanılmış olsaydı Expires
gibi niteliğini bu , o zaman:
expires=Thu, 01 Jan 1970 00:00:00 GMT;
o zaman muhtemelen işe yarardı.