微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按照重定向然后发布

如何解决按照重定向然后发布

我有一个可行的解决方案,但我想有人有更好的方法来做到这一点。

好的,我正在尝试通过 POST 请求获取数据。

  • 第 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);

有没有更好的方法来做到这一点?提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。