Kaip nustatyti slapukus naršyklėje?
sobes.tech AI
Atsakymas iš AI
Slapukų nustatymas naršyklėje gali būti keliomis būdais.
-
Per HTTP antraštę
Set-Cookieserveryje. Tai pagrindinis būdas nustatyti slapuką, kuris vyksta serveryje. Serveris siunčia naršyklei antraštęSet-Cookie, kuri instructruoja naršyklę išsaugoti tam tikrą raktą-vertės porą.Pavyzdys serverio HTTP atsako:
HTTP/1.1 200 OK Content-Type: text/html Set-Cookie: username=johndoe; Expires=Thu, 21 Dec 2023 12:00:00 GMT; Path=/; Secure; HttpOnly Set-Cookie: settings=theme=dark&lang=en; Path=/Set-Cookieantraštės parametrai:name=value: slapuko pavadinimas ir reikšmė. Būtinas parametras.Expires=<data>: data ir laikas, kada slapukas pasibaigia. Jei nenurodyta, slapukas yra sesijos ir išnyksta uždarius naršyklę. Datos formatas - RFC 1123.Max-Age=<sekundės>: slapuko galiojimo laikas sekundėmis. Pirmenybė teikiamaExpires.Domain=<domenas>: domenas, kuriam skirtas slapukas. Paprastai - dabartinis domenas (bet ne subdomenai).Path=<kelias>: kelias serveryje, kuriam skirtas slapukas. Paprastai - šakninis kelias/.Secure: žymeklis, nurodantis, kad slapukas turi būti siunčiamas tik per HTTPS.HttpOnly: žymeklis, nurodantis, kad slapukas nėra prieinamas JavaScriptdocument.cookieper. Apsaugo nuo XSS atakų.SameSite=<režimas>: valdo slapuko siuntimą kryžminėse užklausose. Galimos reikšmės:Strict,Lax(numatyta),None.
-
Naudojant JavaScript kliento pusėje.
document.cookieobjektu galima skaityti, rašyti ir ištrinti slapukus.Rašyti slapuką:
// Paprasto slapuko nustatymas document.cookie = "username=johndoe"; // Slapuko nustatymas su expires, path, secure ir SameSite=Lax const expiryDate = new Date(); expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 dienų document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;Skaityti slapuką:
// document.cookie grąžina visų prieinamų slapukų eilutę "key1=value1; key2=value2; ..." console.log(document.cookie);Ištrinti slapuką: Norint ištrinti slapuką, reikia jį nustatyti su pasibaigimo data praeityje.
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // Nustatyti expires į praeitįSvarbu, kad ištrynimo metu nurodyti tuos pačius
pathirdomainparametrus (jei buvo nustatyti), kaip ir kuriant. Taip patSameSiteturi būti suderinamas. -
Naudojant trečiųjų šalių JavaScript bibliotekas. Yra bibliotekų, kurios palengvina slapukų darbą (pvz.,
js-cookie). Jos siūlo patogesnį API slapukų nustatymui, gavimui ir ištrynimui.Pavyzdys su
js-cookie:// Bibliotekos įtraukimas // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script> // Slapuko nustatymas Cookies.set('username', 'johndoe'); // Slapuko nustatymas su opcijomis Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires dienomis // Slapuko gavimas const username = Cookies.get('username'); // Grąžina 'johndoe' arba undefined const allCookies = Cookies.get(); // Grąžina objektą su visais slapukais // Slapuko ištrynimas Cookies.remove('username'); Cookies.remove('token', { path: '/' }); // Nurodyti path, jei buvo nustatyta