Метод извлечения работает не в Node, а в веб-браузере - PullRequest
0 голосов
/ 01 апреля 2020

Я пытался использовать unirest пакет с кодом, который я скопировал из Postman, и он работает, но когда я пытаюсь сделать то же самое с помощью функции node-fetch, происходит сбой. Если я скопирую этот код в Chrome или в Mozilla, он как-то отлично работает. Что мне здесь не хватает?

  const test = async () => {
  const res = await fetch('http://vhost3.lnu.se:20080/dinner/login', {
    credentials: 'include',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: 'username=zeke&password=coys&submit=login',
    method: 'POST'
  })
  const data = await res
  return data
}

Это ответ в терминале узла:

Response {
  size: 0,
  timeout: 0,
  [Symbol(Body internals)]: {
    body: PassThrough {
      _readableState: [ReadableState],  
      readable: true,
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      _writableState: [WritableState],
      writable: false,
      allowHalfOpen: true,
      _transformState: [Object],
      [Symbol(kCapture)]: false
    },
    disturbed: false,
    error: null
  },
  [Symbol(Response internals)]: {
    url: 'http://vhost3.lnu.se:20080/dinner/login/booking',
    status: 401,
    statusText: 'Unauthorized',
    headers: Headers { [Symbol(map)]: [Object: null prototype] },
    counter: 1
 }
}

1 Ответ

0 голосов
/ 01 апреля 2020
  1. Используются файлы cookie вашего браузера. Когда вы входите на этот сервер. Это сохраняет некоторые куки (токен). ТАК, что вам не нужно входить снова. Почтальон использует chrome куки. Вот почему работает. Попробуйте в режиме инкогнито.

  2. По другой причине для вашего браузера может быть включена поддержка прокси. чем вы должны передать детали прокси в приложении узла тоже.

...