无法向 .NET Core MVC 发出 HTTP post 请求

时间:2021-05-15 19:53:28

标签: asp.net-core .net-core asp.net-core-mvc cors restapi

我目前正在开发一个使用 ASP.NET Core MVC 的项目(视图正在使用 Vue 的另一个端口上运行)。我已经设置了我的模型和控制器,并且我已经使用 swagger 测试了这些。它们完全按预期工作。我已经在 swagger 上测试了 post 方法并且它有效,但是我在另一个运行 Vue 和 Postman 的端口上的请求返回了 405 错误。检查 Postman 上的响应标头,我可以看到“允许:删除、获取、放置”。因为我的视图将在另一个端口上运行,所以我已经在启动配置方法中添加了以下 CORS(目前不关心安全隐患):

app.UseCors(builder => {
  builder.AllowAnyOrigin()
    .AllowAnyHeader()
    .AllowAnyMethod();
});

我的控制器为 POST 方法提供以下功能:

[ResponseType(typeof (Review))]
[HttpPost]
public async Task Post(Review review)
{
  db.Reviews.Add(review);
  await db.SaveChangesAsync();
}

我正在从 https://localhost:44334/reviews/Post 访问 Postman 上的 URL。 Reviews 是控制器,post 是方法。我没有收到任何交叉原始控制错误,只是这个 405。为什么会这样做,我该如何调试?


我试图发布到 https://localhost:44334/reviews/Post 但我的路由器没有这样设置。将 URL 更改为 https://localhost:44334/reviews/ 并将方法设置为 Post 工作并返回成功 200 响应。

2 个答案:

答案 0 :(得分:0)

这是很常见的问题。对于来自 localhost AllowAnyOrigin() 的请求不起作用。您需要明确允许原点:

cache=$http_cache_control

在配置方法中告诉 CORS 使用您刚刚创建的策略:

max-age=0

来自邮递员的请求会通过 CORS,因为它们附加了特殊的标头。

答案 1 :(得分:-1)

我试图发布到 https://localhost:44334/reviews/Post 但我的路由器没有这样设置。将路由更改为 https://localhost:44334/reviews/ 并将方法设置为 Post(在 Postman 上)工作并返回成功 200 响应。我错误地链接了端点。

相关问题