Api 调用从应用程序中给出 204

Api call gives 204 from application

我已经在服务器上部署了我的 React 应用程序和 .net 核心 api。当我从浏览器检查时,.net core api 调用工作正常。但是当我从 React 应用程序调用它时,它给出 204 无内容。在本地一切正常。

我启用了这样的 CORS

options.AddPolicy(MyAllowSpecificOrigins,
                builder =>
                {
                    builder.WithOrigins("http://serverip:5000",
                            "http://serverip:3000"
}   

api呼唤---

[HttpGet]
    [Route("path/{id}")]
    public async Task<ActionResult<List<myData>>> GetByType(byte id)
    {

      if (IsUserAuthenticated())
            return await _myRepo.GetMyData(id);
        else
            return null;
    }

响应调用-----

      axios.get('http://ip:5000/api/value1/value2/' + param1, { 
      withCredentials: true })

感谢任何帮助!

你的 api 路线是

[Route("path/{id}")]

你应该改变

axios.get('http://ip:5000/api/value1/value2/' + param1, { 
      withCredentials: true })

axios.get('http://ip:5000/api/path/' + param1, { 
      withCredentials: true })

尝试将代码更改为

[HttpGet]
[Route("path/{id}")]
public async Task<ActionResult<List<myData>>> GetByType(byte id)
{

  if (IsUserAuthenticated())
        return await _myRepo.GetMyData(id);
    else {
        HttpContext.Response.StatusCode = 401;
        return null;
     }
}

这将确保 NoContent 204 结果不只是代码的空部分。

如果您收到未经授权的响应,那么您需要弄清楚您的安全性。

顺便说一句,您可以使用过滤器进行授权或使用属性,而不是在每个操作上都写上它。

最后,这是我的一个愚蠢的错误。我在流程中的某个地方硬编码了 localhost url ,这在从服务器访问时导致了 CORS 问题。感谢所有帮助!