javascript - 无法获取 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 请求被取消?
解决方案
所以我想我已经弄清楚了,当调用 fetch 时有这两行代码 -POST
我认为发生的事情是浏览器在 fetch 完成之前重新路由,所以网络取消了请求并且没有任何东西发送到后端.
props.history.push("/reports");
window.location.reload();
我已经评论了这两个,现在它似乎工作了。我将不得不考虑如何将用户重新路由到相关页面,但至少我已经确定了问题。
推荐阅读
- python - 3-D 数据的高斯混合计数图
- angular - Angular Universal - 谷歌未定义
- fonts - Jasper 报告字体渲染问题
- angularjs - 在 Angular 组件中使用 KendoUI AngularJS 指令
- javascript - 用 Vue 组件动态替换文本字符串
- http - http.get() 返回“422 无法处理的实体”
- sql - SQL Join 查询带来多个结果
- .htaccess - .htaccess - 如果找到,则在 .phar 文件上提供请求,否则在 index.php 上提供
- android - 忽略导航()调用
- node.js - NodeJS 中的客户端 websocket 证书