You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReactJS调用.NET API接收响应时抛出错误求助

问题排查与解决方案

从错误信息和代码来看,核心问题是前端尝试用JSON解析后端返回的纯字符串JWT令牌,导致JSON语法错误。

问题原因

你的.NET后端在验证成功后直接返回了纯字符串格式的JWT令牌:

return Ok(token);

而React前端使用response.json()方法解析响应,这个方法要求响应内容必须是合法的JSON格式,纯字符串不符合JSON语法规范,因此抛出Unexpected token 'e', "eyJhbGciOiJ..." is not valid JSON错误。

解决方案(二选一即可)

方案1:修改后端返回JSON格式响应

将令牌包装在JSON对象中返回,这样前端可以正常用response.json()解析:

public IActionResult Login([FromBody] UserLogin userLogin)
{
    var user = Authenticate(userLogin);

    if (user != null)
    {
        var token = Generate(user);
        // 将令牌包装为JSON对象
        return Ok(new { Token = token });
    }
    else
    {
        return NotFound("User not found");
    }
}

前端无需修改,此时data.Token就是你的JWT令牌字符串。

方案2:修改前端接收纯文本响应

保持后端代码不变,将前端的response.json()替换为response.text(),直接接收纯字符串:

function getJWTToken(event) {
    event.preventDefault();

    const userCredentials = {
      email: user_email,
      password: user_password,
    };

    const url = Constants.API_URL_LOGIN;

    fetch(url, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify(userCredentials),
    })
      // 替换为text()方法接收纯字符串
      .then((response) => response.text())
      .then((data) => {
        console.log("Success:", data); // data就是JWT令牌字符串
      })
      .catch((error) => {
        console.error("Error:", error);
      });
  }

额外注意事项

如果后续遇到跨域相关错误,需要在.NET后端配置CORS中间件,允许前端域名的请求访问。

内容的提问来源于stack exchange,提问作者Cypher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:25:38