【问题标题】:Axios post request with jsession id带有会话 ID 的 Axios 发布请求
【发布时间】:2019-07-02 20:37:47
【问题描述】:

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

我的应用程序中有 express、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 有效。

【问题讨论】:

  • "Access-Control-Allow-Origin": "*", 是一个 response 标头,它在请求中没有位置。

标签: javascript node.js axios jsessionid


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    axios 。要求({ 网址:“http://url”, 方法:“获取”, 标题:{ Cookie:“JSESSIONID=???;路径=/???;域=???;HttpOnly;过期=2038 年 1 月 19 日星期二 03:14:07 GMT;” } })

    【讨论】:

    • 问题是 - 有时它确实有效,有时它不(我不知道为什么)。最重要的是它必须从头到尾自动化 - 所以我无法每次都手动设置标题。
    猜你喜欢
    • 2021-11-17
    • 2017-08-14
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多