#1793·superagent

[bug] Setting cookies does not take effect

Author: gongshunCreated Jan 31, 2024Updated Jan 31, 2024
LabelsBug

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

https://github.com/ladjs/superagent/blob/1c8338b2e0a3b8f604d08acc7f3cbe305be1e571/src/node/index.js#L856

image

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.