首页 > 解决方案 > 405 使用 Vue 3.0 应用程序中的 axios 到 .Net Core 2.2 并在策略中使用 AllowAnyMethod 的响应

问题描述

我正在失去理智并且阅读了很多博客,所以问题和文档我确信这是一个简单的修复,我现在完全看不到。

我有一个从 vuejs 应用程序到 .net core 2.2 api 项目的 axios 后调用。按照 Microsoft 的启用 CORS 指南,我在服务中使用了访问策略并装饰了控制器。请参阅下面的代码。

飞行前选项响应为 204,实际调用中的 405 响应引用允许:DELETE、GET、PUT 作为允许的方法……我在这里错过了什么?我在政策中有 .AllowAnyMethod 但它似乎被完全忽略了。一位使用 WebAPI 2.2 的同事。项目具有完全相同的代码,并且可以正常工作。

启动.cs

services.AddCors(options =>
{
  options.AddDefaultPolicy(
    builder =>
    {
      builder.WithOrigins("http://example.com",
                                    "http://www.contoso.com");
       });

   options.AddPolicy("VueFrontEnd",
       builder =>
       {
         builder.WithOrigins("http://localhost:30001/")
                                    .AllowAnyHeader()
                                    .AllowAnyMethod();
          });
      });

控制器

[EnableCors("VueFrontEnd")]
[HttpPost]
public async Task<JsonResult> DoesItExist(string searchString)
{            
  var data = new string[] { "A", "B", "C" };
  var result = data.Any(searchString.Contains);

  return Json(JsonConvert.SerializeObject(result));
 }

Vue

getClientsByPartialString(search: string) {
        Axios({
            method: 'post',
            url: 'https://localhost:44380/api/values/DoesItExist',
            crossDomain: true,
            data: {
                name: 'world',
            },
        })
    }

标签: vue.jsaxiosasp.net-core-2.2

解决方案


这让我很难过。这是路由。

添加 [HttpPost("/TheApi")] 装饰器对其进行排序。

我很惭愧。我使用的是完整的 URL http://localhost:port/api/values/themethod,尽管在控制器上设置了路由,但我还是失败了。

让我担心的一件事是为什么这与 GET 和 PUT 一起工作并且只在 POST 上失败。我没有答案。


推荐阅读