Paket modul CommonJs/AMD untuk browser. Memungkinkan untuk membagi basis kode Anda menjadi beberapa bundel, yang dapat dimuat sesuai permintaan. Mendukung pemuat untuk memproses file sebelumnya, mis. e. json, jsx, es7, css, kurang,. dan barang kustom Anda
Cookie adalah bagian kecil dari data yang dikirim dari situs web ke browser web pengguna. Mereka digunakan untuk menyimpan informasi tentang pengguna, seperti preferensi atau status login mereka
Saat pengguna mengunjungi situs web, browser web mereka akan mengirimkan permintaan ke server. Server kemudian akan mengirimkan respons, yang mencakup sekumpulan header. Salah satu tajuk ini adalah tajuk "Cookie", yang berisi daftar semua kuki yang terkait dengan situs web
Mengurai Header Cookie
Untuk mem-parsing header Cookie, pertama-tama kita harus membaginya menjadi pasangan nama-nilai individual. Ini dapat dilakukan dengan menggunakan String. metode split()
Setelah kita memiliki larik pasangan nama-nilai, kita kemudian dapat mengulanginya dan membuat objek. Objek akan memiliki nama cookie sebagai kunci dan nilai cookie sebagai nilainya
Katakanlah kita memiliki tajuk Cookie berikut −
Set-Cookie: username=john; expires=Thu, 18 Dec 2019 12:00:00 GMT; path=/;Kita dapat membaginya menjadi pasangan nama-nilai individual seperti −
var pairs = header.split(';'); _Ini akan memberi kita array berikut −
['username=john', 'expires=Thu, 18 Dec 2019 12:00:00 GMT', 'path=/']Kami kemudian dapat mengulang melalui array ini dan membuat objek −
var cookies = {}; for (var i = 0; i < pairs.length; i++) { var nameValue = pairs[i].split('='); cookies[nameValue[0].trim()] = nameValue[1]; }Ini akan memberi kita objek berikut -
{ username: 'john', expires: 'Thu, 18 Dec 2019 12:00:00 GMT', path: '/' } _Mendekati
LANGKAH 1 - Kita mulai dengan membuat fungsi bernama parseCookieHeader(). Fungsi ini akan mengambil header cookie sebagai parameter
LANGKAH 2 - Kami menggunakan String. metode split() untuk membagi header menjadi pasangan nama-nilai individual
LANGKAH 3 - Kami membuat objek kosong untuk menyimpan cookie
LANGKAH 4 - Kami menggunakan for loop untuk mengulang semua pasangan nama-nilai
LANGKAH 5 - Kami menggunakan String. metode split() untuk membagi setiap pasangan nama-nilai menjadi sebuah array
LANGKAH 6 - Kami menyimpan elemen pertama dari array (nama cookie) sebagai kunci di objek cookie. Kami menyimpan elemen kedua dari array (nilai cookie) sebagai nilai dalam objek cookie
LANGKAH 7 - Kami mengembalikan objek cookie
LANGKAH 8 - Kami mendapatkan header cookie dari dokumen
LANGKAH 9 - Kami memanggil fungsi parseCookieHeader() dan mengirimkan header cookie. Ini akan mengembalikan objek dari semua cookie
LANGKAH 10 - Kami menampilkan cookie di konsol serta di jendela keluaran
Contoh
Program berikut mendemonstrasikan cara mengurai tajuk Cookie HTTP dan mengembalikan objek dari semua pasangan nama-nilai cookie. Ini kode kerja lengkapnya −
Dalam tutorial ini, kita belajar cara mem-parsing header Cookie dan mengembalikan objek dari semua pasangan nama-nilai cookie di JavaScript
Parsing string header HTTP Cookie dan kembalikan objek dari semua pasangan nama-nilai cookie. Argumen str adalah string yang mewakili Cookie nilai header dan
var cookie = require('cookie-parse');
0 adalah objek opsional yang berisi opsi parsing tambahanvar cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
_Pilihan
var cookie = require('cookie-parse');
1 menerima properti ini di objek opsimembaca sandiMenentukan fungsi yang akan digunakan untuk mendekode nilai cookie. Karena nilai cookie memiliki kumpulan karakter terbatas (dan harus berupa string sederhana), fungsi ini dapat digunakan untuk mendekode nilai cookie yang sebelumnya dikodekan menjadi string JavaScript atau objek lain
Fungsi defaultnya adalah
var cookie = require('cookie-parse');
_2 global, yang akan mendekodekan setiap urutan yang disandikan URL ke dalam representasi byte merekaperhatikan jika kesalahan dilemparkan dari fungsi ini, nilai cookie asli yang tidak didekodekan akan dikembalikan sebagai nilai cookie
Kue kering. membuat serial (nama, nilai, opsi)
Serialkan pasangan nama-nilai cookie ke dalam string header
var cookie = require('cookie-parse');
3. Argumenvar cookie = require('cookie-parse');
_4 adalah nama untuk cookie, argumenvar cookie = require('cookie-parse');
5 adalah nilai untuk menyetel cookie, dan argumenvar cookie = require('cookie-parse');
0 adalah objek opsional yang berisi opsi serialisasi tambahanvar setCookie = cookie.serialize('foo', 'bar');
// foo=bar
Pilihan
var cookie = require('cookie-parse');
7 menerima properti ini di objek opsidomainMenentukan nilai untuk. Secara default, tidak ada domain yang disetel, dan sebagian besar klien akan menganggap cookie hanya berlaku untuk domain saat ini
menyandiMenentukan fungsi yang akan digunakan untuk menyandikan nilai cookie. Karena nilai cookie memiliki kumpulan karakter terbatas (dan harus berupa string sederhana), fungsi ini dapat digunakan untuk menyandikan nilai menjadi string yang cocok untuk nilai cookie.
Fungsi default adalah
var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
_0 global, yang akan menyandikan string JavaScript ke urutan byte UTF-8 dan kemudian menyandikan URL apa pun yang berada di luar rentang cookiekedaluwarsaMenentukan objek
var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
_1 menjadi nilai untuk. Secara default, tidak ada kedaluwarsa yang ditetapkan, dan sebagian besar klien akan menganggap ini sebagai "cookie tidak tetap" dan akan menghapusnya dengan syarat seperti keluar dari aplikasi browser webperhatikan pernyataan bahwa jika
var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
_4 danvar cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
5 ditetapkan, makavar cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
6 diutamakan, tetapi mungkin tidak semua klien mematuhi ini, jadi jika keduanya ditetapkan, mereka harus menunjuk ke tanggal dan waktu yang samahttpOnlyMenentukan nilai
var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
_7 untuk atribut [var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
8var cookie = require('cookie-parse');
3][rfc-6265-5. 2. 6]. Jika benar, atributvar cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
_8 disetel, jika tidak, tidak. Secara default, atributvar cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
_8 tidak disetelperhatikan hati-hati saat mengatur ini ke
var setCookie = cookie.serialize('foo', 'bar');
// foo=bar
2, karena klien yang patuh tidak akan mengizinkan JavaScript sisi klien untuk melihat cookie divar setCookie = cookie.serialize('foo', 'bar');
// foo=bar
3maxAgeMenentukan
var setCookie = cookie.serialize('foo', 'bar');
// foo=bar
_4 (dalam detik) menjadi nilai untuk. Angka yang diberikan akan dikonversi menjadi bilangan bulat dengan pembulatan ke bawah. Secara default, tidak ada usia maksimum yang ditetapkanperhatikan pernyataan bahwa jika
var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
_4 danvar cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
5 ditetapkan, makavar cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
6 diutamakan, tetapi mungkin tidak semua klien mematuhi ini, jadi jika keduanya ditetapkan, mereka harus menunjuk ke tanggal dan waktu yang samajalurMenentukan nilai untuk. Secara default, jalur dianggap sebagai. Secara default, tidak ada usia maksimum yang ditetapkan, dan sebagian besar klien akan menganggap ini sebagai "cookie tidak tetap" dan akan menghapusnya dengan syarat seperti keluar dari aplikasi browser web
situs yang samaMenentukan
var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
7 atauvar cookie = require('cookie');
var escapeHtml = require('escape-html');
var http = require('http');
var url = require('url');
function onRequest(req, res) {
// Parse the query string
var query = url.parse(req.url, true, true).query;
if (query && query.name) {
// Set a new cookie with the name
res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
httpOnly: true,
maxAge: 60 * 60 * 24 * 7 // 1 week
}));
// Redirect back after setting cookie
res.statusCode = 302;
res.setHeader('Location', req.headers.referer || '/');
res.end();
return;
}
// Parse the cookies on the request
var cookies = cookie.parse(req.headers.cookie || '');
// Get the visitor name set in the cookie
var name = cookies.name;
res.setHeader('Content-Type', 'text/html; charset=UTF-8');
if (name) {
res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>');
} else {
res.write('<p>Hello, new visitor!</p>');
}
res.write('<form method="GET">');
res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">');
res.end('</form');
}
http.createServer(onRequest).listen(3000);
3 menjadi nilai untuk atributvar cookie = require('cookie');
var escapeHtml = require('escape-html');
var http = require('http');
var url = require('url');
function onRequest(req, res) {
// Parse the query string
var query = url.parse(req.url, true, true).query;
if (query && query.name) {
// Set a new cookie with the name
res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
httpOnly: true,
maxAge: 60 * 60 * 24 * 7 // 1 week
}));
// Redirect back after setting cookie
res.statusCode = 302;
res.setHeader('Location', req.headers.referer || '/');
res.end();
return;
}
// Parse the cookies on the request
var cookies = cookie.parse(req.headers.cookie || '');
// Get the visitor name set in the cookie
var name = cookies.name;
res.setHeader('Content-Type', 'text/html; charset=UTF-8');
if (name) {
res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>');
} else {
res.write('<p>Hello, new visitor!</p>');
}
res.write('<form method="GET">');
res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">');
res.end('</form');
}
http.createServer(onRequest).listen(3000);
4var cookie = require('cookie-parse');
3var setCookie = cookie.serialize('foo', 'bar');
// foo=bar
2 akan menyetel atributvar cookie = require('cookie');
var escapeHtml = require('escape-html');
var http = require('http');
var url = require('url');
function onRequest(req, res) {
// Parse the query string
var query = url.parse(req.url, true, true).query;
if (query && query.name) {
// Set a new cookie with the name
res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
httpOnly: true,
maxAge: 60 * 60 * 24 * 7 // 1 week
}));
// Redirect back after setting cookie
res.statusCode = 302;
res.setHeader('Location', req.headers.referer || '/');
res.end();
return;
}
// Parse the cookies on the request
var cookies = cookie.parse(req.headers.cookie || '');
// Get the visitor name set in the cookie
var name = cookies.name;
res.setHeader('Content-Type', 'text/html; charset=UTF-8');
if (name) {
res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>');
} else {
res.write('<p>Hello, new visitor!</p>');
}
res.write('<form method="GET">');
res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">');
res.end('</form');
}
http.createServer(onRequest).listen(3000);
4 kevar cookie = require('cookie');
var escapeHtml = require('escape-html');
var http = require('http');
var url = require('url');
function onRequest(req, res) {
// Parse the query string
var query = url.parse(req.url, true, true).query;
if (query && query.name) {
// Set a new cookie with the name
res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
httpOnly: true,
maxAge: 60 * 60 * 24 * 7 // 1 week
}));
// Redirect back after setting cookie
res.statusCode = 302;
res.setHeader('Location', req.headers.referer || '/');
res.end();
return;
}
// Parse the cookies on the request
var cookies = cookie.parse(req.headers.cookie || '');
// Get the visitor name set in the cookie
var name = cookies.name;
res.setHeader('Content-Type', 'text/html; charset=UTF-8');
if (name) {
res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>');
} else {
res.write('<p>Hello, new visitor!</p>');
}
res.write('<form method="GET">');
res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">');
res.end('</form');
}
http.createServer(onRequest).listen(3000);
8 untuk penegakan situs yang sama ketatvar cookie = require('cookie');
var escapeHtml = require('escape-html');
var http = require('http');
var url = require('url');
function onRequest(req, res) {
// Parse the query string
var query = url.parse(req.url, true, true).query;
if (query && query.name) {
// Set a new cookie with the name
res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
httpOnly: true,
maxAge: 60 * 60 * 24 * 7 // 1 week
}));
// Redirect back after setting cookie
res.statusCode = 302;
res.setHeader('Location', req.headers.referer || '/');
res.end();
return;
}
// Parse the cookies on the request
var cookies = cookie.parse(req.headers.cookie || '');
// Get the visitor name set in the cookie
var name = cookies.name;
res.setHeader('Content-Type', 'text/html; charset=UTF-8');
if (name) {
res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>');
} else {
res.write('<p>Hello, new visitor!</p>');
}
res.write('<form method="GET">');
res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">');
res.end('</form');
}
http.createServer(onRequest).listen(3000);
_9 tidak akan menyetel atribut ________32______4$ npm test
1 akan menyetel atributvar cookie = require('cookie');
var escapeHtml = require('escape-html');
var http = require('http');
var url = require('url');
function onRequest(req, res) {
// Parse the query string
var query = url.parse(req.url, true, true).query;
if (query && query.name) {
// Set a new cookie with the name
res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
httpOnly: true,
maxAge: 60 * 60 * 24 * 7 // 1 week
}));
// Redirect back after setting cookie
res.statusCode = 302;
res.setHeader('Location', req.headers.referer || '/');
res.end();
return;
}
// Parse the cookies on the request
var cookies = cookie.parse(req.headers.cookie || '');
// Get the visitor name set in the cookie
var name = cookies.name;
res.setHeader('Content-Type', 'text/html; charset=UTF-8');
if (name) {
res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>');
} else {
res.write('<p>Hello, new visitor!</p>');
}
res.write('<form method="GET">');
res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">');
res.end('</form');
}
http.createServer(onRequest).listen(3000);
4 ke$ npm test
3 untuk penegakan situs yang lemah$ npm test
_4 akan menyetel atributvar cookie = require('cookie');
var escapeHtml = require('escape-html');
var http = require('http');
var url = require('url');
function onRequest(req, res) {
// Parse the query string
var query = url.parse(req.url, true, true).query;
if (query && query.name) {
// Set a new cookie with the name
res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
httpOnly: true,
maxAge: 60 * 60 * 24 * 7 // 1 week
}));
// Redirect back after setting cookie
res.statusCode = 302;
res.setHeader('Location', req.headers.referer || '/');
res.end();
return;
}
// Parse the cookies on the request
var cookies = cookie.parse(req.headers.cookie || '');
// Get the visitor name set in the cookie
var name = cookies.name;
res.setHeader('Content-Type', 'text/html; charset=UTF-8');
if (name) {
res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>');
} else {
res.write('<p>Hello, new visitor!</p>');
}
res.write('<form method="GET">');
res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">');
res.end('</form');
}
http.createServer(onRequest).listen(3000);
4 kevar cookie = require('cookie');
var escapeHtml = require('escape-html');
var http = require('http');
var url = require('url');
function onRequest(req, res) {
// Parse the query string
var query = url.parse(req.url, true, true).query;
if (query && query.name) {
// Set a new cookie with the name
res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
httpOnly: true,
maxAge: 60 * 60 * 24 * 7 // 1 week
}));
// Redirect back after setting cookie
res.statusCode = 302;
res.setHeader('Location', req.headers.referer || '/');
res.end();
return;
}
// Parse the cookies on the request
var cookies = cookie.parse(req.headers.cookie || '');
// Get the visitor name set in the cookie
var name = cookies.name;
res.setHeader('Content-Type', 'text/html; charset=UTF-8');
if (name) {
res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>');
} else {
res.write('<p>Hello, new visitor!</p>');
}
res.write('<form method="GET">');
res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">');
res.end('</form');
}
http.createServer(onRequest).listen(3000);
8 untuk penegakan situs yang sama ketat
Informasi lebih lanjut tentang tingkat penerapan yang berbeda dapat ditemukan di spesifikasi
catatan Ini adalah atribut yang belum sepenuhnya terstandarisasi, dan dapat berubah di masa mendatang. Ini juga berarti banyak klien mungkin mengabaikan atribut ini sampai mereka memahaminya
amanMenentukan nilai
var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
// { foo: 'bar', equation: 'E=mc^2' }
_7 untuk atribut [$ npm test
8var cookie = require('cookie-parse');
3][rfc-6265-5. 2. 5]. Jika benar, atribut$ npm test
8 disetel, jika tidak, tidak. Secara default, atribut$ npm test
_8 tidak disetelperhatikan hati-hati saat mengatur ini ke
var setCookie = cookie.serialize('foo', 'bar');
// foo=bar
2, karena klien yang patuh tidak akan mengirim cookie kembali ke server di masa mendatang jika browser tidak memiliki koneksi HTTPSContoh
Contoh berikut menggunakan modul ini bersama dengan Node. Server HTTP js core untuk meminta nama pengguna dan menampilkannya kembali pada kunjungan berikutnya