Benim gibi meraklı bir arayüz geliştiriciyseniz, bazı kişilerin jquery kütüphanesini Google CDN’den host ederken protocol kullanmadığını farketmişsinizdir. Bende bunu ilk gördüğümde merakımdan hemen neden böyle kullanıldığını araştırdım.
Araştırmalarımın sonucunda bu kullanımın güvenli referans (SSL) kullanan siteler için bir püf noktası olduğunu öğrendim.
Bugün bir çok site güvenlik için SSL kullanmakta. Fakat SSL kullanımı sitelerde önbelleklenebilir statik kaynaklarda problem yaratmakta. Yani tarayıcılar ilk etapta bu dosyalarıda şifrelenmiş bir şekilde isteyecektir ve çoğu tarayıcı SSL üzerinden şifrelenmiş bu dosyaları önbelleğine almaz. Bu yüzden, kullanıcının bilgisayarında Google CDN’den HTTP üzerinden önbelleklenmiş bir Jquery kütüphanesi olsa bile tarayıcı aynı sunucudaki aynı dosya için HTTPS referanslı istek ile karşılaştığından bu dosyayı kullanmayacaktır. Başka bir deyişle;
1 |
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
|
ile
1 |
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
|
tamamen birbirinden farklıdır. Haliyle https üzerinden açılan sayfada jquery kütüphanesini http isteğiyle çağırırsak bu çalışmayacaktır. Tam bu noktada imdadımıza şu yöntem koşuyor;
1 |
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
|
bu şekilde protocol yazılmadığında tarayıcı temel dökümanın protocolünü kullanır. Yani bu şekilde kullanım hem https hemde http de çalışacaktır.
Sayfa basit, şifresiz HTTP referansı ile yüklendiğinde jquery kütüphanesi normal bir şekilde bilgisayarımıza önbelleklenecek, HTTPS refransı ile sayfa yüklendiğinde ise script https referansı ile Google CDN den yüklenecektir. Bu konu hakkında daha detaylı bilgilere Dare Ward tarafından yazılan Cripple the Google CDN’s caching with a single character yazısından ulaşabilirsiniz.
Son olarak ufak bir uyarı yapayım ;
Bu şekilde protocolsüz url kullanımı eğer bilgisayarınızda diskinizden bir html sayfası yüklemeye çalıştığınızda hata verecektir. Bu yüzden, eğer bir web server üzerinde çalışmıyorsanız, http protocolünü yazmayı unutmayın. Aksi halde sayfaya script yüklenmeyecektir.
Hatamız var ise affola, iyi çalışmalar