带有会话 ID 的 Axios post 请求

Axios post request with jsession id

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

我的应用程序中有 express、axios、axiosCookieJar 和 tough - 问题是,即使我认为我能够从对 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 执行相同的调用 - GET 请求到 IP 服务器以获取 jsessionid,然后第二个 POST 请求使用传递 username/password 的表单数据。

作为我当前通话的结果,我得到 "Invalid username or password" - 因此 multipart/form-data 有效。

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

axios 。要求({ url: "http://url", 方法:"get", headers:{ 饼干:"JSESSIONID=???; path=/???; domain=???; HttpOnly; Expires=Tue, 19 Jan 2038 03:14:07 GMT;" } })

解决方案是 - 服务器正在使用 Digest 授权,因此任何尝试都失败了。我能够深入研究日志并在应用程序中找到它。