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-encoding
etc. (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.