Браузерде кукилерди кантип орнотуу керек?
sobes.tech AI
AIден жооп
Браузерде кукилерди орнотуу үчүн бир нече жол бар.
-
HTTP башталыш
Set-Cookieаркылуу серверден. Бул кукилерди орнотуунун негизги жолу, ал сервер тарабынан ишке ашырылат. Сервер браузергеSet-Cookieбашталышын жиберет, ал браузерге белгилүү бир ачкыч-баа жупту сактоого көрсөтмө берет.Серверден HTTP жооптун мисалы:
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-Cookieбашталышынын параметрлери:name=value: кукинин аты жана мааниси. Мажбурий.Expires=<датасы>: кукинин мөөнөтү жана убактысы. Эгер көрсөтүлбөсө, анда сессиялык куки болуп, браузер жабылганда өчүрүлөт. Датанын форматы RFC 1123.Max-Age=<секунд>: кукинин максималдуу жашоо мөөнөтү секунддар менен.Expiresүстөмдүк кылат.Domain=<домен>: куки жеткиликтүү болгон домен. Туура келгенде, учурдагы домен (бирок поддомендер эмес).Path=<жол>: сервердеги куки жеткиликтүү болгон жол. Туура келгенде, түпкү жол/.Secure: белгиси, кукинин тек HTTPS аркылуу жөнөтүлүшүн көрсөтөт.HttpOnly: белгиси, кукинин JavaScript аркылууdocument.cookieаркылуу жеткиликтүү болбоосун көрсөтөт. XSS чабуулдарынан коргоо.SameSite=<режим>: кукинин кросс-сайт суроолорунда жөнөтүлүшүн башкаруу. Мүмкүн болгон маанилер:Strict,Lax(өзүнчө),None.
-
Клиент тараптагы JavaScript аркылуу.
document.cookieобъектисин колдонуп, кукилерди окуп, жазып жана өчүрүүгө болот.Куки жазуу:
// Жөнөкөй куки орнотуу document.cookie = "username=johndoe"; // `expires`, `path`, `secure` жана `SameSite=Lax` менен куки орнотуу const expiryDate = new Date(); expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 күн document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;Куки окуу:
// `document.cookie` бардык жеткиликтүү кукилердин сапты кайтарат "ключ1-маани1; ключ2-маани2; ..." форматында console.log(document.cookie);Куки өчүрүү: Өчүрүү үчүн, анын мөөнөтүн өткөнгө коюу керек.
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // expires өткөндө коюуӨчүрүүдө,
pathжанаdomainпараметрлерин ошол эле кылуу маанилүү (эгер белгиленсе), ошондой элеSameSiteда туура болушу керек. -
Чет өлкөлүк JavaScript китепканалары аркылуу. Кийинки китепканалар кукилер менен иштөөнү жеңилдетет (мисалы,
js-cookie). Алар орнотуу, алуу жана өчүрүү үчүн көбүрөөк ыңгайлуу API сунуштайт.js-cookieменен мисал:// Китепкананы кошуу // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script> // Куки орнотуу Cookies.set('username', 'johndoe'); // Куки орнотуу опциялар менен Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires күндөрдө // Куки алуу const username = Cookies.get('username'); // 'johndoe' же `undefined` const allCookies = Cookies.get(); // бардык кукилерди объект түрүндө кайтарат // Куки өчүрүү Cookies.remove('username'); Cookies.remove('token', { path: '/' }); // жолду көрсөтүү, эгер ал орнотулса