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"'

Afili bir CSS dokümanı nasıl olmalı?

Bugün Fatih Hayrioğlu’nun not defterinde okuduğum “CSS Kod Yazma Düzeni” adlı yazı üzerine ben de kendi görüşlerimi paylaşayım ve uzun süren sessizliğimi bozayım dedim. Yazıya devam etmeden önce, Fatih’in yazısını okumanızı tavsiye ederim.

Okumaya devam et Afili bir CSS dokümanı nasıl olmalı?

Google Translate Türkçe

Bugün Google Translate ile ilgili Twit’imi gönderdikten sonra farkettim ki, microblogging benim normal blog alışkanlıklarımı kötü yönde etkilemiş. Eskiden böyle bir olayla karşılaştığımda hemen araştırma yapar, bir blog yazısı yazardım. Şimdi ya Twitter ya da FriendFeed‘e yazıp geçiyorum. Bu alışkanlığımı kırmaya çalışacağım. Bu yazı da bunun ilk adımı olsun.

Başlıkta da yazdığı gibi Google Translate artık Türkçe çeviri yapabiliyor. Dün konuyla ilgili önce Erman‘dan görüp, daha sonra da Google Operating System‘deki yazıyı okuduktan sonra, yine de Türkçe eklemeleri için çok çalışmaları lazım diye düşünmüştüm. Bugün FriendFeed‘de Ahmet Yükseltürk‘ün bu girdisini görünce hemen yeni bir tarayıcı sekmesi açıp Google Translate’e girdim.

Google Translate Türkçe
Tüm özellikleri ile beraber (metin çevirisi, web sayfası çevirisi, tercüme ile arama, sözlük) hiç bilmediğimiz dillerden Türkçe’ye çeviri (ya da tam tersi) yapabilecek olsak da, denemelerimde gördüm ki Türkçe’nin yapısı itibarı ile köprünün altından daha çok su akması gerekiyor. Yine de bu adım çok sevindirici bir haber. Özellikle Türkiye’de hala kelime çevirisi ile çeviri yaptığını iddia eden onlarca program göz önüne alındığında.

Buna benzer bir projem vardı, arada o da güme gitti ama varsın gitsin.

CSS ile ortalama

Bu yazı orijinali Max Design‘da yayınlanmış olan “CSS Centering – fun for all!” isimli yazının Türkçe çevirisidir.

CSS kullanarak bir içerik bloğunu nasıl ortalarsınız? Bunun için hali hazırda iki metot var ve seçiminizi sayfanızın likit (tarayıcı penceresinin boyutlarına göre boyutları değişen tasarım) ya da sabit genişlikli bir tasarım olmasına göre yapmalısınız.

Likit tasarımlarda ortalama

Likit tasarımlarda içerik bloğunu her iki tarafına da marjin koyarak kolayca ortalayabilirsiniz. Marjinler em, piksel ya da yüzde birimi olarak ayarlanabilir.

div#container
{
margin-left: 10%;
margin-right: 10%;
}

Sabit genişlikli tasarımlarda ortalama

Teorik olarak içerik bloğunun sağına ve soluna otomatik marjinler verdiğinizde bloğun ortalanması lazım.

W3C görsel biçimlendirme modeli‘ne göre: “Eğer ‘margin-left’ ve ‘margin-right’ değerleri ‘auto’ ise, her ikisi de eşit değer kullanır. Bu da elemanı içerik bloğunun kenarlarına göre ortalar.”

Yani bir içerik bloğu şu kurallar uygulanarak ortalanabilir:

div#container
{
margin-left: auto;
margin-right: auto;
width: 50em;
}

Ne varki bazı tarayıcılar otomatik marjinleri gözardı ettiklerinden bu şekilde içerik bloklarını ortalamazlar. Bahsettimiz tarayıcılar arasında şunlar vardır:

  • NN4 (Mac ve Win)
  • Win/IE4
  • Win/IE5
  • Win/IE5.5
  • Win/IE6 (quirks modda)

Basit iki kural ekleyerek yukarıda saymış olduğumuz tarayıcılardan NN4 haricinde diğerlerinde bu problemi giderebiliriz.

1. body’yi ortala

Her ne kadar bu tarayıcılar otomatik marjinleri göz ardı etseler de “text-align: center” şeklinde bir kuralı hepsi tanır. Bu kuralı body elemanına uygularsak içerik bloğu doğru bir şekilde ortalanır. Yani yeni bir kural eklendi:

body
{
text-align: center;
}

div#container
{
margin-left: auto;
margin-right: auto;
width: 50em;
}

2. text-align’ı sıfırla

Yeni kural ile ilgili tek problem, artık sayfadaki tüm elemanlar ortalandı. Bu tümünü ortalama probleminin üstesinden gelmek için yeni bir içerik bloğu ekleyerek “text-align: left” kuralını uygulayalım. Sonuç CSS kodu şu şekilde:

body
{
text-align: center;
}

div#container
{
margin-left: auto;
margin-right: auto;
width: 50em;
text-align: left;
}

Sonuçlar

İlk örnek sayfa bir içerik bloğunun otomatik marjinler kullanılarak, body ortalanmadan nasıl ortalanacağını gösteriyor.

“text-align: center” olmadan ortalama, örnek sayfası

İkinci örnek sayfa, bir içerik bloğunun otomatik marjinlerle nasıl sayfa içinde ortalanacağını ve aynı zamanda body elemanının ortalanmasını ve içerik bloğunda “text-align: left” kullanımını gösteriyor.

“text-align: center” ve “text-align: left” ile ortalama, örnek sayfası

Çeviriler

Bu makale Rodrigue tarafından Fransızca‘ya çevrilmiştir.