gpt4 book ai didi

c# - 无法在 .Net Core 3.1 中的 Web Api 中使用 Cors

转载 作者:行者123 更新时间:2023-12-03 17:12:38 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to resolve 'preflight is invalid (redirect)' or 'redirect is not allowed for a preflight request'

(4 个回答)


1年前关闭。




我需要从提供它的源以外的源访问我的 .NET Core 3.1 WebApi。然而,当我关注 the guidance from Microsoft我仍然在客户端收到以下 JavaScript 错误:

Access to fetch at 'http://localhost:50679/merchants' from origin 'http://localhost:64237' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.



在我的 Startup 类中,我的 ConfigureServices 方法如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder =>
{
builder.WithOrigins("http://localhost:64237");
});
});

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

services.AddControllers();
}

...我的 Configure 方法如下所示:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseHttpsRedirection();

app.UseRouting();

app.UseCors("CorsPolicy");

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}

然后,我在我调用的 Controller 方法上使用了 EnableCors 属性,如下所示:
[EnableCors("CorsPolicy")]

我在 StackOverflow 上看到了几篇关于 Cors 的帖子,但没有一个有帮助,因为我没有看到我做错了什么 - 但是,其中大部分都不是特定于 .NET Core 3.1。我还做了一个意义检查并设置断点来检查上述所有代码是否正在运行。

任何人都可以请解释为什么我不能在这种情况下使用 Cors 吗?

最佳答案

您可以尝试删除 app.UseCors("CorsPolicy")app.UseEndpoints(...)阻止 Startup.cs,因为它通过 将 CORS 策略应用于所有应用程序端点CORS 中间件 , 而 [EnableCors("CorsPolicy")]通过 Controller 、 Action 方法等启用它。

根据 Microsoft,您不应同时使用这两种方法:

We recommend against combining policies. Use the [EnableCors] attribute or middleware, not both in the same app.


// Remove this piece of code
app.UseCors("CorsPolicy");
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});

还可以使用以下方法更新您的政策:
options.AddPolicy(
"CorsPolicy",
builder =>
{
builder.
WithOrigins("http://localhost:64237").
AllowAnyHeader().
AllowAnyMethod();
});

关于c# - 无法在 .Net Core 3.1 中的 Web Api 中使用 Cors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59511862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com