Dalam aplikasi saya, saya perlu mengatur cookie menggunakan framework express. Saya telah mencoba kode berikut tetapi tidak mengatur cookie.
Adakah yang bisa membantu saya melakukan ini?
var express = require('express'), http = require('http');
var app = express();
app.configure(function(){
app.use(express.cookieParser());
app.use(express.static(__dirname + '/public'));
app.use(function (req, res) {
var randomNumber=Math.random().toString();
randomNumber=randomNumber.substring(2,randomNumber.length);
res.cookie('cokkieName',randomNumber, { maxAge: 900000, httpOnly: true })
console.log('cookie have created successfully');
});
});
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(5555);
Jawaban:
Urutan di mana Anda menggunakan middleware dalam hal-hal Express: middleware yang dideklarasikan sebelumnya akan dipanggil terlebih dahulu, dan jika itu dapat menangani permintaan, middleware apa pun yang dinyatakan kemudian tidak akan dipanggil.
Jika
express.static
menangani permintaan, Anda perlu memindahkan middleware Anda:Juga, kebutuhan middleware untuk kedua ujung permintaan (dengan mengirim kembali respon), atau lulus permintaan ke middleware berikutnya. Dalam hal ini, saya telah melakukan yang terakhir dengan menelepon
next()
ketika cookie telah diatur.Memperbarui
Sampai sekarang cookie parser adalah paket npm yang terpisah, jadi alih-alih menggunakan
Anda perlu menginstalnya secara terpisah menggunakan
npm i cookie-parser
dan kemudian menggunakannya sebagai:sumber
express.static
, yang akan menanganinya setelah middleware Anda. Jadi untuk setiap file JS atau CSS, kodenya akan dipanggil.Demo
sumber
Tidak persis menjawab pertanyaan Anda, tetapi saya menemukan pertanyaan Anda, sambil mencari jawaban untuk masalah yang saya miliki. Mungkin itu akan membantu orang lain.
Masalah saya adalah cookie diatur dalam respons server, tetapi tidak disimpan oleh browser.
Respons server kembali dengan cookie yang ditetapkan:
Ini adalah bagaimana saya menyelesaikannya.
Saya menggunakan
fetch
kode sisi klien. Jika Anda tidak menentukancredentials: 'include'
dalamfetch
opsi, cookie tidak dikirim ke server atau disimpan oleh browser, meskipun respons server menetapkan cookie.Contoh:
Saya harap ini membantu seseorang.
sumber
Tetapkan cookie:
https://expressjs.com/en/4x/api.html#res.cookie
Baca cookie:
(menggunakan middleware cookie-parser )
https://expressjs.com/en/4x/api.html#req.cookies
sumber