C# .NET Web API CORS错误

rlcwz9us  于 2023-02-06  发布在  .NET
关注(0)|答案(1)|浏览(289)

我已经试了好几天了,但还是不能让它工作。我有一个本地的网络应用程序和一个本地的,独立运行的。NET 6.0 WebAPI,它应该接受发布请求。
发送获取请求的Web应用程序在localhost:3000上运行,WebAPI在localhost:44379上运行
我的CORS-Policy在Program.cs文件中设置如下:
appsettings.json:

"AllowedHosts": "*",
  "cors": {
    "rules": [
      {
        "origin": "*",
        "allow": true
      }
    ]
  }

Program.cs:

builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowMyOrigin",
                    builder => builder
                        .AllowAnyMethod()
                        .AllowAnyHeader()
                        .AllowAnyOrigin()

                );
});

然后我在运行应用程序之前使用它们,我还确保在路由调用之后和授权调用之前调用cors策略:

var app = builder.Build();

app.UseSwagger();
app.UseSwaggerUI();
app.UseHttpsRedirection();

app.UseRouting();
app.UseCors("AllowMyOrigin");
app.UseAuthorization();

app.UseMiddleware<ApiKeyMiddleware>();
app.MapControllers();

app.Run();

我仍然得到cors错误,也与启用的浏览器加载项,这应该禁用浏览器上的问题。
我似乎不知道缺少了什么,希望得到帮助

4zcjmb1e

4zcjmb1e1#

结果证明我的CORS配置已经正确设置。
正如jdweng在评论中指出的,400的响应类型为:“cors”可能只是一个假错误,以混淆黑客,因为一些服务器可能会这样做。
这意味着我将注意力转移到检查Request-Header和Payload上,并且能够识别JSON-Payload的一个属性的DateTime转换问题。
修复后,请求通过,我也没有得到任何CORS错误。
因此,如果您遇到类似的问题,并且已经非常确定CORS选项的正确设置,请务必调试您的Fetch/Axios请求,并在后端实现正确的错误处理,以查看输入模型是否有效,并捕获错误以发回更详细的错误。

相关问题