Node.js 遵循重定向然后发布

Node.js 遵循重定向然后发布,node.js,node-request,Node.js,Node Request,我有一个可行的解决方案,但我想有人有更好的方法来解决这个问题 好的,我正试图通过POST请求获取数据 const handleResponse = (err, response, body) => { if (err) throw new Error(err); if ([302, 301].includes(response.statusCode)) return; if (body) doSomethingLater = body; console.log(`get

我有一个可行的解决方案,但我想有人有更好的方法来解决这个问题

好的,我正试图通过
POST
请求获取数据

const handleResponse = (err, response, body) => {
  if (err) throw new Error(err);
  if ([302, 301].includes(response.statusCode)) return;

  if (body) doSomethingLater = body;

  console.log(`getData status code: ${response.statusCode}`);
};

const postRedirect = response => {
  if ([302, 301].includes(response.statusCode) && response.headers.location !== response.request.originalRequest.url) {
    return true;
  }

  session(response.request.originalRequest, handleResponse);
  return false;
};

const originalRequest = {
  method: 'POST',
  url: `https://notmy.website.com/getData`,
  json: { someStuff },
};

const requestOptions = {
  ...originalRequest,
  followAllRedirects: true,
  followRedirect: postRedirect,
  originalRequest,
};

session(requestOptions, handleResponse);
  • 步骤1-我使用单个API调用登录。我拿回了一块饼干,但我想这不是我所需要的一切
  • 第2步-我尝试通过
    POST
    调用从服务获取数据,但它会重定向我大约4次,以获取有效会话所需的所有cookie。问题是我试图发出的请求需要
    POST
    方法,但在所有重定向之后,它使用
    GET
    方法将我发送回同一URL。一、 当然,在响应中会得到一条错误消息,指出该方法是不允许的
这是我的工作解决方案,但它似乎过于复杂。(自下而上阅读代码更有意义。)我基本上告诉它遵循所有重定向,除非它将我引导回原始请求,在这种情况下,将其更改为新的
POST
请求

const handleResponse = (err, response, body) => {
  if (err) throw new Error(err);
  if ([302, 301].includes(response.statusCode)) return;

  if (body) doSomethingLater = body;

  console.log(`getData status code: ${response.statusCode}`);
};

const postRedirect = response => {
  if ([302, 301].includes(response.statusCode) && response.headers.location !== response.request.originalRequest.url) {
    return true;
  }

  session(response.request.originalRequest, handleResponse);
  return false;
};

const originalRequest = {
  method: 'POST',
  url: `https://notmy.website.com/getData`,
  json: { someStuff },
};

const requestOptions = {
  ...originalRequest,
  followAllRedirects: true,
  followRedirect: postRedirect,
  originalRequest,
};

session(requestOptions, handleResponse);
有更好的方法吗?提前谢谢