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 问题。感谢所有帮助!
我已经在服务器上部署了我的 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 问题。感谢所有帮助!