Emipad
Emipad

Reputation: 35

Cookie not being set from node typescript request

I'm trying to set a cookie in a node request. I have tried using packages like js-cookie, cookie-js, cookie and cookie-manager but none work. The way I have tried it is very straight-forward, whenever my endpoint gets called i.e. https://develop.api/sess/init, I set the cookie at the very beggining of the endpoint with the following code

import * as Cookies from 'js-cookie';
export const init = async (event: APIGatewayEvent, context: Context) => {
   ...
   Cookies.set('hello', 'hello');
   ...
}

As my endpoint has an auth header, I can not directly call it into my browser URL due to missing permissions, so I tried generating the fetch function with postman and pasting it into my browser's console. The function is the following

var myHeaders = new Headers();
myHeaders.append("Referer", "accepted.referer.com");
myHeaders.append("key", "somekey");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://develop.api/sess/init", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Once called, my request successfully returns the expected response, but it never shows a Set-Cookie header in the network section, neither shows my cookie in the Application section.

I have to mention that I also tried looking for the cookie when making the call within Postman, but it never sets it neither.

Also, I have tried starting the application in localhost, and I have a successful response, but my cookie is still not being set.

About the package showed in the code, I said I have tried it with different ones and their implementations, so I don't think a broken package is the problem.

I'm starting to think that I have a wrong idea about how cookies work, or that someway I am completely blocking the sending of cookies within my code.

Environment

If it helps in any way, my endpoint is being hosted in a AWS Lambda application. I know this should be trivial, but being battling with it for a day now.

Upvotes: 0

Views: 1927

Answers (1)

Emipad
Emipad

Reputation: 35

I finally answered my own issue. The key here is that I'm using AWS lambdas as the proxy, therefore, the headers I were using to send the cookies were wrong, I was sending the cookies with the endpoint instead of within the lambda. Let me explain myself.

I was adding 'Set-Cookie':'cookieKey:cookieVal' in the headers of the Postman Call that I was using to test both my local and develop environments.

Instead of that, I needed to send the request within the response of the lambda for the cookies to be registered.

Please check at the following links for similar cases ->

Upvotes: 1

Related Questions