JQuery cookie js mifano. Cookie katika jQuery - ufungaji, usanidi na mifano ya matumizi

Siku nyingine niliamua kuangalia kwa karibu vidakuzi: jinsi zinavyofanya kazi, jinsi zilivyoundwa, jinsi ya kuzitumia. Kwa uelewa wa mwisho, iliamuliwa kupakua programu-jalizi ya kufanya kazi na vidakuzi katika JQuery. Kiungo cha programu-jalizi kimeambatishwa Kuki Plugin kwa jQuery.

Nitaanza na nadharia. Vidakuzi ni sehemu muhimu Itifaki ya HTTP. Vidakuzi hupitishwa kutoka kwa seva hadi kwa mteja katika kichwa cha majibu cha HTTP cha seva. Kwa usahihi zaidi - katika uga wa Set-Cookie wa kichwa hiki. Sehemu ya Set-Cookie inaweza kuwa na data kutoka kwa vidakuzi vingi. Pia, kichwa cha majibu ya HTTP kinaweza kuwa na sehemu kadhaa za Set-Cookie. Umbizo la sehemu ya Set-Cookie katika kichwa cha majibu ya HTTP ya seva imetolewa hapa chini:

Set-Cookie:< name>=< value> [ ; < name>=< value> ] ...
[; inaisha muda wake=< date>] [ ; kikoa=< domain_name> ]
[; njia=< some_path>] [ ; salama [; http pekee]

Inaweza kuonekana kuwa safu ya Set-Cookie ya kichwa cha majibu ya seva ina mfuatano wa mifuatano iliyotenganishwa na vibambo ";" (semicolon). Moja au zaidi = jozi hufuata kwanza. Kila moja ya jozi hizi inalingana na kuki moja inayoitwa jina na thamani. Kisha fuata sifa ambazo vidakuzi vilivyomo katika uga huu wa Set-Cookie vimewekwa. Yafuatayo ni maelezo ya thamani za sifa za vidakuzi.

  • Sifa hiyo inaisha muda wake. Imebainishwa katika umbizo: expires= . Inafafanua tarehe na wakati wa mwisho wa matumizi ambayo imewekwa na sehemu hii ya Set-Cookie katika kichwa cha majibu ya HTTP cha seva ya kidakuzi. Thamani lazima iwe mfuatano unaobainisha saa za Greenwich Meridian (GMT) katika umbizo la "DAY, DD-MMM-YYYY HH:MM:SS GMT" (kwa mfano "Jumanne, 28 Feb 2006 12:41:04 GMT"). Mara kidakuzi kinapoisha muda wake, kinafutwa na kivinjari. Ikiwa sifa ya kuisha muda wake haijawekwa (tarehe ya kuisha kwa kidakuzi haijawekwa), vidakuzi hufutwa wakati kivinjari kinatoka. Vidakuzi hivi huitwa vidakuzi vya "kikao" (vinatumika hadi mwisho wa kipindi cha sasa).
  • sifa ya kikoa. Imebainishwa katika kikoa cha umbizo= . Hubainisha mwisho wa seti ya majina ya vikoa ambamo vidakuzi vinavyowekwa ni halali. Kwa mfano, ikiwa katika kuweka vidakuzi, thamani ni .codeguru.ru, vidakuzi vilivyowekwa itatumwa kwa seva wakati wa kuomba hati kutoka kwa tovuti ziko kwenye vikoa web.codeguru.ru, forum.codeguru.ru, nk. Ambapo hali ya ziada kutuma kuki kutaangalia thamani ya sifa ya njia - tazama hapa chini. Sifa ya kikoa ni muhimu sana. Inaweza kutumika, kwa mfano, kuandaa mfumo wa umoja uthibitishaji wa mtumiaji kwa huduma mbalimbali za wavuti ziko kwenye vikoa vidogo tofauti. Kwa mfano, kwenye tovuti kuu na kwenye jukwaa la tovuti. Ili kuepuka utumaji usiodhibitiwa wa vidakuzi, thamani haipaswi kuwa na jina la eneo pekee (kwa mfano, .com, .net.ru, nk.).
  • Sifa ya njia. Imebainishwa katika umbizo path= . Inafafanua seti ya URL ambazo vidakuzi vilivyowekwa ni halali. Kwa mfano, ikiwa thamani wakati wa kuweka kidakuzi ni /temp, basi vidakuzi vilivyowekwa vitatumwa wakati wa kuomba hati, ikiwa ni pamoja na njia /temp000 na /temp/temp.htm. Ikiwa thamani ya njia haijabainishwa, inachukuliwa kuwa njia ya rasilimali kwa ombi ambalo vidakuzi viliwekwa.
  • Sifa salama. Hii ni sifa aina ya boolean. Kubainisha sifa salama katika sehemu ya Set-Cookie ya kichwa cha majibu cha HTTP cha seva hufanya vidakuzi kuwekwa salama. Vidakuzi kama hivyo lazima vitumwe kwa seva kwa kutumia itifaki ya https pekee. HTTPS ni sawa itifaki ya http, data pekee kati ya mteja na seva hupitishwa kupitia muunganisho salama (data imesimbwa) SSL (Safu ya Soketi Salama).
  • HttpOnly sifa. Hii ni sifa ya Boolean. Kubainisha sifa ya HttpOnly katika sehemu ya Set-Cookie ya kichwa cha majibu cha HTTP cha seva hufanya vidakuzi vilivyowekwa kutofikiwa na hati za mteja (hii ni kwa sababu za usalama).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
jQuery.cookie = kazi() (
var url = location.href ; // njia ya vidakuzi vilivyosanikishwa
this .cookieID = "cookies" ; // jina la kutofautisha ambalo litakuwa na vidakuzi vyetu

hii .set = kazi (chaguo) ( // Kazi ya kuweka vidakuzi
var cookieContent = "" ; // anzisha utofauti wa kwa kitanzi
var filterProperties = ( "cookieID" : 0 , "set" : 1 , "pata" : 2); // tengeneza kitu chenye maadili yanayojulikana
chaguzi = chaguzi || (); // ikiwa vigezo vya mtumiaji vinapitishwa, tumia. Hatusakinishi chochote kwa chaguo-msingi.

kwa (var mali katika hii ) ( // iterate kupitia vitu vyote vya kitu kinachosababisha
ikiwa (! (property in filterProperties) ) ( // vuta vitu vyote isipokuwa vile vilivyomo kwenye kichujioProperties
ikiwa (hii [ mali] === null ) hii [ mali] = "" ; // ikiwa tuna sifuri, ibadilishe na ""
cookieContent += (mali) + ":" + (hii [ mali] ) + "," ; // andika jina la kutofautisha + thamani ya kutofautisha
}
}
cookieContent = cookieContent.substring ( 0 , cookieContent.length - 1); // ondoa koma ya mwisho
var expires = "" ; // anzisha utofauti
ikiwa (options.expires && (typeof options.expires == "number" || options.expires .toUTCString ) ) ( // ikiwa tuna thamani yoyote basi
tarehe ya var; // tengeneza kigezo cha tarehe
ikiwa (typeof options.expires == "number" ) ( // ikiwa hii ni nambari
date = new Date() ; // tarehe ya sasa
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000) ) ; // weka wakati
) mwingine (
tarehe = chaguzi.inaisha muda wake; // thamani tupu; vidakuzi vitahifadhiwa hadi mwisho wa kipindi
}
expires= "; expires=" + date.toUTCstring () ; // weka maisha ya kuki
}
var path = options.path ? "; path=" + (options.path ) : "" ; // weka url ambayo vidakuzi vilivyosakinishwa ni halali
var domain = options.domain ? "; domain=" + (options.domain ) : "" ; // weka misheni ya tovuti
var safe = options.secure ? "; salama" : "" ; // onyesha ikiwa data inapaswa kusimbwa kwa njia fiche au la
document.cookie = [ this .cookieID , "=" , encodeURIComponent(cookieContent) , muda wake unaisha, njia, kikoa, salama] .jiunge ("" ) ; // tengeneza kamba kutoka kwa safu na uandike kwa vidakuzi
kurudi kweli;
} ;

this .get = function () ( // kazi ya kupata vidakuzi
var cookieValue = "" ;
ikiwa (document.cookie && document.cookie != "" ) ( // ikiwa vidakuzi vinapatikana na vipo
var cookies = document.cookie .split (";" ) ; // kugawanyika na kupata safu
kwa (var i = 0; i< cookies.length ; i++ ) { // выполняем перебор массива
var cookie = jQuery.trim (vidakuzi[ i] ) ; // kukata pedi zote
ikiwa (cookie.substring (0 , this .cookieID .length + 1 ) == (hii .cookieID + "=" ) ) ( // pata neno kuki
cookieValue = decodeURIComponent(cookie.substring (hii .cookieID .length + 1 ) ; // ilitoa maadili yote
mapumziko;
}
}
var properties = cookieValue.split ("," ) ; // gawanya maadili yote katika safu
kwa (var i = 0; i< properties.length ; i++ ) { // перебрали массив
var property = properties[ i].split (":" ) ; // gawanya kila kipengele na
hii [ mali[ 0 ] ] = mali[ 1] ; // aliongeza mali kwa vitu
}

}
kurudi kweli;
} ;
kurudisha hii;
} ;

HTML itaonekana kama hii:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56


"thamani"

$. kuki ("jina"); // => "thamani"

Ikiwa kuki haipo, ambayo haijafafanuliwa itarejeshwa, kwa mfano

ikiwa ($.cookie("nothing") == null) ( tahadhari("Kidakuzi hakijawekwa!");)