CATEGORII DOCUMENTE |
Daca va sperie prezenta unor 'prajiturele' straine pe calculatorul de acasa sau de la birou, merita sa va linistiti citind cateva explicatii tehnice. Va veti convinge ca totul este pentru confortul dumneavoastra. Nu mai fiti atat de suspiciosi
Cookie-urile reprezinta un mecanism standard care permite ca un server (site) Web sa trimita anumite informatii pe calculatorul unui client (utilizator), prin intermediul browserului, sa ceara clientului sa stocheze aceste informatii pentru ca, ulterior, in diferite circumstante, navigatorul sa returneze informatiile spre serverul WWW. Cookie-urile pot fi privite asadar ca un mijloc persistent de stocare a datelor pe masina clientului Web cu scopul de a fi accesate ulterior de pe server, fiind utilizate la memorarea preferintelor utilizatorilor, la diverse tranzactii in comertul electronic, la completarea automata a formularelor, la stocarea informatiilor de autentificare etc.
In cadrul unei tranzactii HTTP, serverul Web nu memoreaza nici o informatie despre aceasta, datorita modului de concepere a protocolului de transfer a datelor hipertext. In anumite cazuri, este insa util ca informatiile de stare ale unei conexiuni HTTP sa fie stocate pentru a fi folosite in cadrul altei tranzactii de date. Astfel, a aparut necesitatea implementarii cookie-urilor in cadrul navigatoarelor Web ca entitati purtatoare de date intre servere si clienti.
Termenul de cookie a fost introdus de Lou Montulli, unul dintre autorii specificatiei tehnice a browserului Netscape, care in versiunea 1.1 avea implementat in premiera mecanismul de cookie-uri.
Contrar temerilor celor mai multi utilizatori ai Internetului, cookie-urile nu sunt periculoase pentru calculatoarele gazda, neavand drept continut decat cateva linii de text, neputand accesa programe de pe disc sau extrage informatii confidentiale despre utilizator pentru a fi trimise inapoi la un server Web. Datele detinute de un cookie sunt datele pe care le ofera, din proprie initiativa, utilizatorul sau cele returnate in cadrul antetului HTTP la o tranzactie de date intre client si server. Un alt server diferit de serverul care a creat un cookie nu-l poate accesa.
De altfel, fiecare navigator Web ofera posibilitatea refuzarii cookie-urilor ori interogarii utilizatorilor daca sa fie acceptate sau nu (vezi caseta 'Primiti sau nu primiti'). Programatorul poate seta un cookie sa fie persistent (nu va fi distrus la inchiderea navigatorului, ci va fi memorat intr-un fisier, dupa cum vom vedea mai jos, perioada lui de viata fiind stabilita de creator) sau nu.
Atributele unui cookie
Un cookie consta in principal dintr-o pereche nume=valoare asemanatoare parametrilor vehiculati de scripturile CGI. Valoarea este un sir de caractere care trebuie codificat in maniera URL-urilor. Datele referitoare la un cookie vor fi receptionate de browser, care mentine o lista de cookie-uri apartinand serverului care le-a trimis. Perechile nume-valoare ale cookie-urilor prezente in memoria navigatorului vor fi returnate spre procesare serverului care le-a creat, la cererea acestuia.
Mecanismul de setare a cookie-urilor pe calculatorul client si de retrimitere a lor spre server se bazeaza pe campurile din antetul unei tranzactii de date HTTP.
Astfel, un cookie este trimis unui client incluzand un parametru-antet Set-Cookie intr-un raspuns HTTP, forma lui generala fiind: Set-Cookie: nume=valoare; expires=data; path=cale; domain=domeniu; secure.
Observam ca pot fi specificate atributele optionale:
Un cookie este transmis numai daca intruneste toate conditiile de validitate (se potrivesc domeniul, calea de directoare, timpul de expirare si securitatea canalului de comunicatie).
Serverul va primi de la client, in antetul HTTP, o linie de forma: Cookie: nume1=valoare1; nume2=valoare2.
De retinut urmatoarele aspecte:
Caseta 'Conversatia' descrie dialogul dintre un server si un navigator Web
Stocarea cookie-urilor la client
Un cookie este limitat la 4 kilobytes lungime, fiecare cookie fiind salvat intr-un fisier separat ori toate cookie-urile fiind memorate intr-un fisier comun, in functie de tipul si de versiunea browserului folosit. La fel, numarul total de cookie-uri ce pot popula discul hard este dependent de navigator (la Netscape, maxim 300). Cookie-urile pot fi sterse, fie de catre serverul care le-a produs, fie prin intermediul unei optiuni a navigatorului, fie de catre utilizator (cautandu-le pe disc). Localizarea fisierelor continand cookie-uri este, de asemenea, dependenta de navigator. La Netscape 4, exista un fisier denumit cookies. txt (varianta Windows sau Macintosh) sau cookies (varianta UNIX/Linux), aflat in directorul personal al utilizatorului. La Internet Explorer 3 si 5 pentru fiecare utilizator se creeaza in directorul Cookies al directorului unde s-a instalat Windows-ul un fisier nume@adresa.txt, in care nume este numele utilizatorului pe masina Windows, iar adresa reprezinta adresa serverului Web care a setat acel cookie. La anumite variante de IE 4, se stocheaza in directorul Temporary Internet Files. Exemple de nume de fisiere valide stocand cookie-uri sunt sabin@ yahoo.txt sau sabin@C__ TEMP__ COOKIES.txt (pentru Internet Explorer). Pentru Lynx, daca este configurat sa salveze cookie-urile pe disc, atunci ele vor fi stocate in directorul home al utilizatorului in fisierul .lynx_cookies. Acest fisier (al carui nume se poate modifica in lynx.cfg) are acelasi format ca si fisierul cookies generat de Netscape.
Un exemplu poate fi consultat in caseta 'Informatii la client' iar o modalitate de vizualizare a informatiilor continute de cookie-urilor este prezentata in caseta 'Ce se vede'.
Programarea cookie-urilor
Voi enumera in continuare cateva abordari pentru crearea si accesarea cookie-urilor atat pe partea server, cat si pe partea client, in cadrul scripturilor CGI, in PHP, ASP si JavaScript.
Crearea cookie-urilor
Dupa cum am vazut, un cookie este creat prin intermediul unui antet Set-Cookie intr-o tranzactie HTTP. Astfel, intr-un script CGI putem scrie:
bin/bash
echo 'Set-Cookie: culoare=verde; path=/; expires=Mon, 21-Aug-2000 15:54:42 GMT'
O alta cale este sa utilizam obiectul predefinit document.cookie intr-o functie JavaScript. Astfel, urmatoarea functie definita de Bill Dortch seteaza un cookie:
function SetCookie(name, value, expires, path, domain, secure)
Functia predefinita escape() codifica un sir de caractere in format similar codificarii URL-urilor.
Un exemplu de utilizare:
var expdate = new Date();
expdate.setTime(expdate.getTime() + (24*60*60*1000));
// setam sa expire dupa o zi de la data curenta
SetCookie('culoare', 'verde', expdate);
SetCookie('alta_culoare', 'albastra');
SetCookie('sec', 'Necesita SSL', expdate, '/', null, true);
In PHP se poate folosi functia predefinita setcookie(), sintaxa acesteia fiind similara functiei JavaScript de mai sus. Sa consideram urmatorul cod PHP:
<?
setcookie('alta_culoare', 'albastra');
echo 'Un cookie de culoare $alta_culoare';
?>
Rezultatul rularii este ca in navigatorul clientului va aparea textul 'Un cookie de culoare albastra'.
Functia setcookie() trebuie scrisa inaintea oricarui marcator HTML (inainte de <html>) pentru ca antetul Set-Cookie sa fie primul trimis clientului.
In ASP vom utiliza obiectul Response.Cookies. Iata un exemplu:
<%
Response.Cookies('culoare') = 'verde'
Response.Cookies('culoare').Expires = 'January 01, 2001'
Response.Cookies('culoare').Domain = 'infoiasi.ro'
Response.Cookies('culoare').Path = '/'
Response.Cookies('culoare').Secure = false
%>
Accesarea cookie-urilor
Pentru a vedea ce valoare are un cookie, putem consulta antetul HTTP Cookie. Cel mai simplu este sa preluam valoarea variabilei de mediu HTTP_COOKIE setata de serverul Web in cadrul unui script CGI scris, de exemplu, in Perl:
@envpairs = split(/;/, $ENV);
foreach $pair (@envpairs) = $value;
}
Am creat un tablou asociativ cookie detinand informatiile despre toate cookie-urile disponibile. Putem atribui unei variabile valoarea cookie-ului numit alta_culoare astfel:
$fundal = $cookie;
In JavaScript vom utiliza tot document.cookie, apeland la functia definita de acelasi Bill Dortch in modul urmator:
function GetCookie (name)
// n-am gasit
return null;
}
Functia getCookieVal() este:
function getCookieVal (offset)
Rezultatul se poate vedea in figura 'Un cookie rosu'.
Functia unescape() este definita de specificatia limbajului, realizand transformarea din forma codata URL in forma normala de reprezentare a unui sir de caractere.
In PHP, fiecare cookie este disponibil ca variabila predefinita, valoarea unui cookie fiind accesibila prin constructia $nume_cookie.
Pentru ASP se poate folosi Request.Cookies in maniera de mai jos:
<p>Culoarea preferata este <%= Request.Cookies('culoare') %>.</p>
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1305
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved