ASP.NET Core应用中JavaScript Fetch无法获取响应体的问题求助
ASP.NET Core应用中JavaScript Fetch无法获取响应体的问题求助
我现在碰到一个棘手的问题:本地的ASP.NET Web API明明运行正常,但用JavaScript的Fetch调用或者直接在浏览器访问时,就是拿不到正确的响应体。
我已经在Swagger里测试过这个API,也调试了后端代码,确认它确实能返回正确的响应体,格式如下:
{ "epcs": [ "E2806995000050084E48825E", "E2806995000040084E44E8A6", "E280699500004004CAA1F8E2", "E2806995000040084E48BC91", "E2806995000050084E418574", "E280699500004004CAA97D4E", "E2806995000050084E4459BA", ... ] }
下面是直接返回EPCs的后端方法:
[HttpGet("stopAndGetData")] public async Task<IActionResult> Stop() { var epcs = await _reader.StopReading(); if (epcs == null || epcs.Count == 0) { return Ok(new { message = "Nenhum EPC capturado." }); } return Ok(new { epcs }); }
但问题来了,当我用JS的Fetch调用,或者直接在浏览器地址栏访问的时候,得到的响应完全不对(看截图)。负责发起请求的JS函数是这样的:
async function stopRead(e) { e.preventDefault(); const stopButton = e.target; stopButton.disabled = true; document.querySelector("#startRead").disabled = false; try { const response = await fetch(`${window.location.origin}/api/read-rfid/stopAndGetData`); if (!response.ok) throw new Error(`Erro: ${response.statusText}`); const data = await response.json(); console.log("EPCs recebidos:", data.epcs || data.message); console.log(data); } catch (error) { console.error("Erro ao parar leitura:", error); stopButton.disabled = false; } }
哦对了,JS代码实际调用的是这个中间接口,它会转发请求到真正的RFID API:
[HttpGet("stopAndGetData")] public async Task<IActionResult> Stop() { try { using (HttpClient client = new HttpClient()) { var response = await client.GetAsync((string)HttpContext.Session.GetString("ServiceLocalUrl") + "/api/rfid/stopAndGetData"); return Ok(response); } } catch (Exception ex) { return BadRequest(ex); } }
(截图显示异常的响应内容)
我已经尝试过这些方法,但都没解决问题:
- 用Axios替代Fetch发起请求
- 修改API的Program.cs文件配置跨域规则
备注:内容来源于stack exchange,提问作者José Luiz Ihlenfeldt Maia
相关产品推荐
相关产品推荐

