Internet Explorer iFrame çerezlerini (cookie) neden engelliyor?

Gün geçmiyor ki Internet Explorer yeni bir arızayla beni çıldırtmasın. Bugüne kadar hep standartları takip etmediği için çıldırtmıştı, bugün ise yeni bir standardı direkt desteklemeye başladığı için çıldırttı. IFrame içinde yer alan sayfalar Internet Explorer’da tarayıcıya çerez (cookie) gönderemeyince problemi araştırmaya başladım ve buradaki yazıya ulaştım.

Problem Internet Explorer’ın W3C tarafından gizlilik tercihleri ile ilgili oluşturulmuş Platform for Privacy Preferences Project, kısaca P3P adlı standardı desteklemesinden kaynaklanıyormuş. Tabi bu durumda buna bir problem demek doğru olur mu bu da tartışılır. Aslında iFrame içinde gösterdiğiniz sayfa farklı bir alan adından çağrılıyorsa, asıl alan adındaki çerezlerin etkilenmemesi/kötüye kullanılamaması için geliştirilmiş bir önlem. Firefox’ta varsayılan olarak bu ayar kapalı geliyor. İsteğe bağlı olarak kendiniz açabiliyorsunuz. Internet Explorer ise varsayılan olarak bu ayarı açık olarak kullanıyor. Lafı fazla uzatmaya gerek yok aslında. P3P hakkında detaylı bilgiye buradan ulaşabilirsiniz. Ben size sorunu nasıl çözebileceğinizden bahsedeyim;

İsterseniz çeşitli online araçlarla kendi P3P kodunuzu üretebilirsiniz(IBM P3P Policy Editor). Uğraşmak istemeyenler iFrame içinde çalışacak olan ve çerez gönderecek olan her sayfanın başlık bilgilerinde P3P için özel bir bilgi göndermeniz gerekiyor. Çeşitli platformlar için örnekleri ekliyorum. Burada yer almayan fakat sizin kullandığınız bir platform varsa, örnek olarak ekleyebilirseniz sevinirim.

PHP:

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

ASP.NET (C#);

HttpContext.Current.Response.AddHeader("p3p","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");

Django:

response = render_to_response('mytemplate.html')
response["P3P"] = 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'

JSP:

response.addHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"")

Rails:

response.headers['P3P'] = 'CP="NON DSP COR CURa IVAa IVDa CONa OUR NOR STA"'