Публикация запроса Axios с идентификатором jsession - PullRequest
0 голосов
/ 08 февраля 2019

Мне нужно удаленно войти на IP-сервер Spring-build, чтобы можно было получать с него изображения.Я могу передать данные формы и получить jsessionid от другого вызова, но я не могу войти в систему.

У меня есть express, axios, axiosCookieJar и жесткий в моем приложении -проблема в том, что даже если я смог получить cookie-файл при первом обращении к IP-серверу, я не смог правильно передать его во второй вызов.Я не могу войти на сервер и изменить его аутентификацию, потому что она унаследована и может принести больше вреда, чем пользы - поэтому мне нужно найти способ аутентификации моего сеанса со стороны NodeJS-клиента.

const logIn = async (address, bodyFormData) => {
  const logIntoIP = await axios.request({
    url: `${ipLinkCompose(address)}`,
    method: "POST",
    mode: "cors",
    headers: {
      "Content-Type": "multipart/form-data",
      "Access-Control-Allow-Origin": "*",
      Cookie: cookieJar.getCookiesSync(addressip)
    },
    withCredentials: true,
    data: bodyFormData
  });
};

Я могу сделать тот же вызов, используя Postman - запрос GET к IP-серверу, чтобы получить jsessionid, а затем второй запрос POST с данными формы, которые передают имя пользователя / пароль.

В результатемой текущий вызов я получаю "Неверное имя пользователя или пароль" - так что multipart / form-data работает.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Решение было - сервер использовал дайджест-авторизацию, поэтому все попытки потерпели неудачу.Я смог покопаться в журналах и нашел это в приложении.

0 голосов
/ 08 февраля 2019

Вы пытались использовать полную информацию о куки от почтальона.Похоже, у меня была похожая проблема.Это работало на почтальоне, но не на аксио.Я сделал что-то подобное, и это сработало.До того, как у меня был JSESSIONID.Я добавил остальную информацию, полученную из ответа почтальона, в поле cookie, и это сработало.

axios .request ({url: "http://url", метод:" get ", заголовки: {Cookie:" JSESSIONID = ???; path = / ???; domain = ???; HttpOnly; Истекает = Вт, 19 января 2038 03:14:07 GMT; "}})

...