javascript fetch API,re-Post formData on useFinalURL

mwg9r5ms  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(103)

有没有办法在fetch后重新发布我的formData。响应不再是重定向?
我的第一个请求(我发送我的Post数据)得到了一个301代码,这是可以的-但是如果下一个(或下一个下一个)响应是useFinalURL,我如何重新发送我的Post-Request?
示例:

fetch(url, {
  method: 'post',
  body: formData,
  redirect: 'follow'
})
.then(function(response) {
  if (response.useFinalURL === true){ resendFetchPost }
})

希望有人能给予我点提示

vsikbqxv

vsikbqxv1#

当你想基于条件检查重做一些东西时,最简单的解决方案通常是递归函数:

const autoPost = (url, formData) => {
  return fetch(url, {
    method: 'POST',
    body: formData,
    redirect: 'follow'
  }).then(resp => {
    return resp.useFinalURL ? 
      autoPost(resp.url, formData) : // resend to final url
      resp.text(); // could sub resp.json() as approp.
  });
};

额外的好处是,由于fetch是异步的,因此不会引发无限递归错误或无休止地阻塞。

相关问题