首页 > 解决方案 > 无法获取 React(不是 CORS)- 来自 Fetch API 的 POST 请求在浏览器中被取消

问题描述

前端开发相当新——我有一个本地 React 前端,它向部署在服务器上的 Java 应用程序发出 POST 请求。

后端的工作方式是,您创建一个POST,它会返回一个状态为 200 的响应 ID。对此的响应 ID 是在后端的不同线程中单独计算的,因此如果您GET使用 ID,如果尚未完成计算,则返回 404 状态,如果已完成响应正文,则返回 200 状态。

所有 GET 和 POST 请求都可以在我的本地主机上的 Postman 等 REST 客户端上正常工作,并且我已经启用了 CORS,因此我的本地计算机可以通过完美的方式POST与服务器通信。GET此外,每次 React UIGET向服务器发出请求时,数据都会完美返回,所以我怀疑这是 CORS 问题。

当我尝试POST从浏览器访问时,我的控制台上不断出现此错误:

在此处输入图像描述

没有任何东西发送到后端,我似乎无法得到任何回应。这是我的代码:

POST

export function runSim(
  clientId,
  simulationName,
  totalSims,
  teamRatings,
  fixtureOverrides,
  tieBreakFormat,
  competitionId,
  proBets
) {
  fetch(baseUrl, {
    method: "POST",
    headers: {
      Authorization: "Basic " + base64.encode(login + ":" + password),
      "Content-Type": "application/json",
    },

    body: JSON.stringify({
      clientId: clientId,
      fixtureOverrides: fixtureOverrides,
      numberOfSimulationsToRun: totalSims,
      simulationName: simulationName,
      teamRatings: teamRatings,
      tieBreakFormat: tieBreakFormat,
      tournamentId: competitionId,
      proBets: proBets,
    }),
  })
    .then(function (response) {
      return response.json();
    })
    .then(function (doc) {
      return doc;
    })
    .catch(handleError);
}

错误处理程序:

export function handleError(error) {
  console.error("API call failed. " + error.status);
  alert(error);
  throw error;
}

这是它在网络上的样子:

在此处输入图像描述

我不明白为什么 POST 请求被取消?

标签: javascriptreactjspromisefetch-api

解决方案


所以我想我已经弄清楚了,当调用 fetch 时有这两行代码 -POST我认为发生的事情是浏览器在 fetch 完成之前重新路由,所以网络取消了请求并且没有任何东西发送到后端.

props.history.push("/reports");
window.location.reload();

我已经评论了这两个,现在它似乎工作了。我将不得不考虑如何将用户重新路由到相关页面,但至少我已经确定了问题。


推荐阅读