Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] Setting cookies does not take effect #1793

Open
3 tasks done
gongshun opened this issue Jan 31, 2024 · 0 comments
Open
3 tasks done

[bug] Setting cookies does not take effect #1793

gongshun opened this issue Jan 31, 2024 · 0 comments
Labels

Comments

@gongshun
Copy link

gongshun commented Jan 31, 2024

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant