Как отправить cookies с помощью node-fetch?
У меня есть приложение nodejs, которое обрабатывает запросы пользователя и получает куки, которые я хочу прокси-сервер для внутренней службы API. Как подойти к этому с помощью узла выборки?
Не предлагайте superagent пожалуйста.
3 ответов
вы должны иметь возможность передавать куки, установив его в заголовке вашего запроса:
const opts = {
headers: {
cookie: 'accessToken=1234abc; userId=1234'
}
};
const result = await fetch(`/some/url`, opts);
для простого, вы можете написать промежуточное программное обеспечение, которое будет включать куки в global.принеси, как внизу.
const realFetch = fetch;
function cookieFetch(fetch, cookie) {
return (url, opts) => {
opts = opts || {};
return fetch(url, Object.assign(opts, {
headers: Object.assign(opts.headers || {}, { cookie })
}));
};
}
function middleware(req, res, next) {
const kuki = req.headers.cookie;
global.fetch = kuki ?
cookieFetch(realFetch, kuki) :
realFetch;
next();
}
module.exports = middleware;
вам не нужен узел-featch, вы можете читать файлы cookie пользователей из заголовка запроса "Cookie". См.https://nodejs.org/dist/latest-v5.x/docs/api/http.html#http_message_headers
но если вы используете междоменный запрос, вы должны настроить запрос клиента с withCredential и добавить заголовки CORS на сервере. Смотри:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS