Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Cookie-uri - Atributele unui cookie

calculatoare



+ Font mai mare | - Font mai mic



Cookie-uri

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:

  • expires - Reprezinta data si timpul (in formatul Wdy, DD-Mon-YYYY HH:MM:SS GMT) cand cookie-ul va expira si va fi sters de pe disc. Daca nu este dat nici un timp de expirare, atunci cookie-ul se considera nepersistent si va dispare la inchiderea navigatorului.
  • domain - Atunci cand se cauta un cookie in lista de cookie-uri se efectueaza si o comparatie intre valoarea acestui atribut si adresa domeniului din care s-a receptionat antetul HTTP. Comparatia se realizeaza pornind de la sufixul valorilor comparate, in sensul ca daca avem domain=uaic.ro atunci aceasta valoare se va potrivi cu un nume de gazda precum info.uaic.ro sau fenrir.info. uaic.ro. Dupa efectuarea acestei comparatii, in cazul in care cookie-ul este validat se va verifica si valoarea atributului path (vezi mai jos). Valoarea implicita a atributului domain este numele simbolic al serverului care a generat acel cookie.
  • path - Se utilizeaza pentru a specifica un subset de URL-uri din domeniul corespunzator unui cookie valid. Daca deja cookie-ul a fost validat in urma procedurii de comparare a domeniului, atunci componenta cale a URL-ului este comparata cu valoarea atributului path, in urma careia cookie-ul este considerat acceptat sau nu. Calea /doc se va potrivi, de exemplu, cu /documentatii si cu /doc/index.html, dar nu cu /dom. Cea mai generala cale de directoare este calea radacina '/'.
  • secure - Daca un cookie este marcat ca secure, prin intermediul acestui atribut, va fi transmis numai daca tranzactia HTTP este una sigura (folosindu-se protocolul HTTPS).

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:

  • pot fi trimise mai multe antete Set-Cookie intr-o tranzactie de date HTTP;
  • desi un cookie nu a atins timpul de expirare, el poate fi sters fie de navigator, fie de utilizator;
  • lungimea antetelor Set-Cookie si Cookie nu poate fi mai mare de 4 kilobytes;
  • anumite navigatoare limiteaza numarul total de cookie-uri ce pot fi setate de un server/domeniu (la Netscape, numarul total este de 20);
  • daca un script CGI vrea sa stearga un cookie de pe masina client, atunci va trimite un cookie avand acelasi nume ca si cookie-ul pe care doreste sa-l elimine, cu valoare nula si cu timpul de expirare setat in trecut (de exemplu Thu, 01-Jan-1970 00:00:00 GMT). Calea va fi de obicei stabilita la '/';
  • nu se pot genera cookie-uri pentru domenii care nu apartin URL-ului transmis de serverul Web (un script din domeniul infoiasi.ro nu poate genera cookie-uri avand domain=ibm.com);
  • antetul Set-Cookie nu va fi niciodata memorat in cache-ul unui proxy Web, fiind propagat spre client, indiferent daca se returneaza cod de stare 200 (OK) sau 304 (Not Modified);
  • serverul IIS incluzand ASP va seta un cookie implicit denumit ASPSESSIONID pentru fiecare sesiune a unui utilizator. Acest cookie include informatii despre sesiunea curenta a unei aplicatii ASP si poate fi consultat asemenea unui cookie obisnuit.

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1233
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved