gpt4 book ai didi

c# - 如何在 Ocelot 中实现 cors header

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:40 25 4
gpt4 key购买 nike

我在我的新项目中实现了 ocelot,我使用 ocelot 在一个点上创建了我的服务集成,但是当我尝试发布、放置、路径或删除到我的 api 网关中的资源时,浏览器向我显示消息

Failed to load http://localhost:8080/api/prospects: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8888' is therefore not allowed access. The response had HTTP status code 404.

我尝试在安装和实现包的网关中配置 corsMicrosoft.AspNetCore.Cors

  public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddOcelot(Configuration)
.AddCacheManager(x =>
{
x.WithMicrosoftLogging(log =>
{
log.AddConsole(Microsoft.Extensions.Logging.LogLevel.Debug);
})
.WithDictionaryHandle();
}); ;
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
app.UseCors(
options => options.WithOrigins("http://localhost:8888").AllowAnyMethod()
);
app.UseOcelot().Wait();
}

最佳答案

这个问题与 Ocelot 无关,CORS 对于所有 .net 核心 api 都是一样的

首先尝试像这样为 AnyOrigin 实现 CORS

    public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});

services.AddMvc();
services.AddOcelot(Configuration);
}

并在 Configure 方法中添加此行 app.UseCors("CorsPolicy");

所以在那之后如果 CORS 工作,而不是 .AllowAnyOrigin() 添加 .WithOrigins("yourdomain") 并且它

有关更多信息,请参阅:https://learn.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2

关于c# - 如何在 Ocelot 中实现 cors header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48130595/

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