SadikAli Karadiya
SadikAli Karadiya

Reputation: 1

I can't set cookie

const express = require ("express");
const app = express();
const cookieParser = require('cookie-parser');
app.use(cookieParser());


app.use('/', (req,res)=>{
    res.send('HOME');
    const data = "John";
    res.cookie("token",data, {httpOnly:true});
    console.log(req.cookies.jwt)
})

app.listen(8000,()=>{
    console.log('server started...');
})

I have also tried httpOnly:false but same error.

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at ServerResponse.setHeader (_http_outgoing.js:558:11) at ServerResponse.header (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\response.js:771:10) at ServerResponse.append (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\response.js:732:15) at ServerResponse.res.cookie (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\response.js:857:8) at D:\DRIVE (E)\MERN\backend\src\app.js:16:10 at Layer.handle [as handle_request] (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\index.js:317:13) at D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\index.js:284:7 at Function.process_params (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\index.js:335:12) at next (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\index.js:275:10) Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at ServerResponse.setHeader (_http_outgoing.js:558:11) at ServerResponse.header (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\response.js:771:10) at ServerResponse.append (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\response.js:732:15) at ServerResponse.res.cookie (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\response.js:857:8) at D:\DRIVE (E)\MERN\backend\src\app.js:16:10 at Layer.handle [as handle_request] (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\index.js:317:13) at D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\index.js:284:7 at Function.process_params (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\index.js:335:12) at next (D:\DRIVE (E)\MERN\backend\node_modules\express\lib\router\index.js:275:10)

Upvotes: 0

Views: 890

Answers (1)

yi fan song
yi fan song

Reputation: 427

res.send() sends the response from the server to the client, you cannot send another response. Sets your cookie headers before sending the response.

res.cookie("token",data, {httpOnly:true});
res.send('HOME');

Perhaps you could read more on cookie headers and learn about the http protocol on mdn.

Upvotes: 1

Related Questions