Janne Annala
Janne Annala

Reputation: 28687

Cookies not saved when using npm request library

I have a local environment and I'm trying to login to a service. I'm using the 'request' library in the client and Express and express-session in the service.

I'm using Chrome and when I login to the service I get the following response headers:

FROM: http://app.dev:3000
TO: http://app.dev:4000/login/local

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: http://app.dev:3000
Vary: Origin, X-HTTP-Method-Override
Access-Control-Allow-Credentials: true
Content-Type: application/json; charset=utf-8
Content-Length: 304
ETag: W/"130-fdQBs605dSVTeEqXEuXrvdcQTLk"
set-cookie: auth=TOKEN; Path=/; Expires=Sun, 25 Jun 2017 01:48:41 GMT
Date: Sat, 24 Jun 2017 13:48:41 GMT
Connection: keep-alive

When I login with Postman the cookie gets stored correctly. Subsequent requests through Postman include the cookie and everything is working fine.

But doing the same request with the npm request library it won't save the cookie and subsequent requests to the backend do not include cookies. Example request to the service after logging in. No cookie sent.

Upvotes: 6

Views: 3600

Answers (1)

Janne Annala
Janne Annala

Reputation: 28687

The request library documentation doesn't mention the withCredentials option but setting it to true fixes the issue. The cookie now gets saved and is being sent on subsequent requests.

const requestBase = request.defaults({
  baseUrl: 'http://app.dev:4000/',
  withCredentials: true,
});

Upvotes: 5

Related Questions