Saltar al contenido

¿Cómo enviar cookies con node-fetch?

Te sugerimos que pruebes esta resolución en un ambiente controlado antes de enviarlo a producción, saludos.

Solución:

Debería poder transmitir cookies configurándolo en el encabezado de su solicitud:

const opts = 
    headers: 
        cookie: 'accessToken=1234abc; userId=1234'
    
;
const result = await fetch(`/some/url`, opts);

Leer y escribir cookies como un bot

async function login() 
  return fetch('/login', 
      'headers': 
          'accept': '*/*',
          'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
          'cookie': '',
      ,
      'body': 'username=foo&password=bar',
      'method': 'POST',
  );


(async() => 
  const loginResponse = await login();
  const loginCookies = parseCookies(loginResponse);
)();

Es posible que desee incluir: accept-language, user-agent, referer, accept-encodingetc. (verifique una solicitud de muestra en sus Chrome DevTools a través de la pestaña Red)

Por alguna razón, las cookies resultantes de las solicitudes de búsqueda de nodos no son compatibles con las nuevas solicitudes, pero podemos analizarlas así:

function parseCookies(response) 
  const raw = response.headers.raw()['set-cookie'];
  return raw.map((entry) => 
    const parts = entry.split(';');
    const cookiePart = parts[0];
    return cookiePart;
  ).join(';');

Pase cookies en sus futuras solicitudes a través de los mismos encabezados:

  return fetch('/dashboard', 
    'headers': 
        'accept': '*/*',
        'cookie': parsedCookies,
    ,
    'method': 'GET',
  );

Para simplificar, puede escribir un middleware que incluirá las cookies en global.fetch, como se muestra a continuación.

const realFetch = fetch;

function cookieFetch(fetch, cookie) 
  return (url, opts) => 
    opts = opts ;


function middleware(req, res, next) 
  const kuki = req.headers.cookie;
  global.fetch = kuki ?
    cookieFetch(realFetch, kuki) :
    realFetch;
  next();


module.exports = middleware;

Nos puedes respaldar nuestro cometido exponiendo un comentario y dejando una puntuación te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *