具有JSession ID的Axios发布请求

时间:2019-02-08 15:05:03

标签: javascript node.js axios jsessionid

我需要远程登录Spring-build IP服务器才能从中获取图像。我能够传递表单数据并从另一个调用中获取jsessionid,但是我无法登录系统。

我在我的应用程序中表达了axios,axiosCookieJar和强悍的问题-问题是,即使认为我能够从第一次调用IP服务器中获取cookie,也无法将其正确传递到第二次通话。我无法登录服务器并更改其身份验证,因为它是旧的,它的弊大于利–因此,我需要找到一种方法来从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进行相同的呼叫-向IP服务器发送GET请求以获取jsessionid,然后通过表单数据传递用户名/密码来获取第二个POST请求。

由于当前通话,我得到“无效的用户名或密码”-这样,multipart / form-data起作用了。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用邮递员提供的完整cookie详细信息。这听起来像我遇到的类似问题。它适用于邮递员,但不适用于axios。我做了这样的事情,它奏效了。在我刚有了JSESSIONID之前。我将其余的信息(从邮递员的回复中获得)添加到了cookie字段中,并且可以正常工作。

axios 。请求({     网址:“ http://url”,     方法:“获取”,     标头:{         Cookie:“ JSESSIONID = ???; path = / ???; domain = ???; HttpOnly; Expires = Tue,2038年1月19日,格林尼治标准时间;”     } })

答案 1 :(得分:0)

解决方案是-服务器正在使用摘要授权,因此任何尝试均失败。我能够挖掘日志并在应用程序中找到它。