16 Kasım 2011 Çarşamba

Firefox 3,5 cookie sorunu

Bu makalemde sizlere karşılaştığım bir sorunun çözümü hakkında kısa bilgi vermeye çalışacağım.

Firefox 3,5 de cookie bilinen javascript kodu ile yazıldığında sık olmasa bile örnek aşağıdaki kod da görüleceği üzere cookie yazma ve okumada başarı sağlanamadığı gözlemlendi.



<html>
<head>
<script type="text/javascript">
function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
  {
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c_name)
    {
    return unescape(y);
    }
  }
}

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}

function checkCookie()
{
var username=getCookie("username");
if (username!=null && username!="")
  {
  alert("Welcome again " + username);
  }
else
  {
  username=prompt("Please enter your name:","");
  if (username!=null && username!="")
    {
    setCookie("username",username,365);
    }
  }
}
</script>
</head>
<body onload="checkCookie()">
</body>
</html>

Bu durumda yapılması gereken makale sonunda size referans aldığım linkden faydalanacağınız kodları kullanarak bu sorunu çözebildim.

Cookie yaratmak:
/* localhost cookie  */
var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); 
var cookieUri = ios.newURI("http://localhost/", null, null); 
var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService); 
 
cookieSvc.setCookieString(cookieUri, null, "kobil=alper;", null);





Cookie Okumak :
  1. var ios = Components.classes["@mozilla.org/network/io-service;1"]  
  2.             .getService(Components.interfaces.nsIIOService);  
  3. var uri = ios.newURI("http://www.google.com/"nullnull);  
  4. var cookieSvc = Components.classes["@mozilla.org/cookieService;1"]  
  5.                   .getService(Components.interfaces.nsICookieService);  
  6. var cookie = cookieSvc.getCookieString(uri, null);  


  1. var cookieMgr = Components.classes["@mozilla.org/cookiemanager;1"]  
  2.                   .getService(Components.interfaces.nsICookieManager);  
  3.   
  4. for (var e = cookieMgr.enumerator; e.hasMoreElements();) {  
  5.   var cookie = e.getNext().QueryInterface(Components.interfaces.nsICookie);   
  6.   dump(cookie.host + ";" + cookie.name + "=" + cookie.value + "\n"); // see http://developer.mozilla.org/en/docs/nsICookie for a list of attributes on |cookie|  
  7. }  


Cookie Silmek :
  1. Components.classes["@mozilla.org/cookiemanager;1"]  
  2.           .getService(Components.interfaces.nsICookieManager).removeAll();  



Örnek :
  1. // Creates a cookie for ".example.com"  
  2. var url = "http://.example.com";  
  3. var cookieString = "your_key_name=your_key_value;domain=.example.com;expires=Thu, 15 Jan 2009 15:24:55 GMT";  
  4.   
  5. var cookieUri = Components.classes["@mozilla.org/network/io-service;1"]  
  6.     .getService(Components.interfaces.nsIIOService)  
  7.     .newURI(url, nullnull);  
  8.   
  9. Components.classes["@mozilla.org/cookieService;1"]  
  10.     .getService(Components.interfaces.nsICookieService)  
  11.     .setCookieString(cookieUri, null, cookieString, null);  




Firefox cookieler nerede saklanır?





%Temp%\AppWizard\firefox\profile klasörü altında bulunan  “cookies.sqlite”  dosyası içerisnde cookie aratılınca bulunabiliyor, Dosya kısmı şifrelidir


Firefox üzerinde  ise ;  Araçlar  > Seçenekler > Gizlilik ekranında görülebilir.