Skip to content

[bug] Setting cookies does not take effect #1793

Open
@gongshun

Description

@gongshun

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

if (hasOwn(this._header, 'cookie')) {

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions