Как отправить 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