Description
Describe the bug
Node.js version:
v16.20.2
OS version:
macOS 14.2.1
Description:
I use set('Cookie',[xxx])
, but the cookie was not added to the request header
const request = require('supertest');
const server = require('./server.js');
const agent = request.agent(server);
const postRes = await agent.post('/verify').set('Cookie', [`csrf-token=xxxxx`]);
Actual behavior
Cookie is not added to the request header
Expected behavior
Cookies can be added to request headers
Code to reproduce
My code is as follows,The first time I set cookie, it can be added to the request header correctly.But the second time I set cookie, it was not added to the request header.
const request = require('supertest');
const server = require('./server.js');
const agent = request.agent(server);
const postRes = await agent.post('/verify').set('Cookie', [`csrf-token=xxxxx`]);
const postRes1 = await agent.post('/verify').set('Cookie', [`csrf-token=xxxxx`]);
I briefly checked this problem, It's because my server returned the set-cookie
response header. Then the second request will only bring the cookie returned by the first request, but not the cookie I set.like this
Cookie: token=xxx
I hope that both the cookies returned by the first request and the cookies I set are added to the response headers correctly. like this
Cookie: csrf-token=xxxxx;token=xxx
I checked the source code
Line 856 in 1c8338b
hasOwn(this._header, 'cookie')
return false
, because of my set('Cookie',[xxx])
it will be added as header['Cookie']=[xxx]
,instead of header['cookie']=xxx
If I write like this, it will add the cookie to the header correctly
const postRes = await agent.post('/verify').set('Cookie', [`csrf-token=xxxxx`]);
const postRes1 = await agent.post('/verify').set('cookie', `csrf-token=xxxxx`);
I don't know if this is a bug or if it's by design
Checklist
- I have searched through GitHub issues for similar issues.
- I have completely read through the README and documentation.
- I have tested my code with the latest version of Node.js and this package and confirmed it is still not working.