【问题标题】:how implements cors headers in Ocelot如何在 Ocelot 中实现 cors 标头
【发布时间】:2018-06-16 06:27:22
【问题描述】:

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

无法加载http://localhost:8080/api/prospects:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:8888' 不允许访问。响应的 HTTP 状态代码为 404。

我尝试在网关安装和实现包中配置 cors Microsoft.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();
    }

【问题讨论】:

    标签: c# .net-core ocelot


    【解决方案1】:

    Ocelot 不关心这个问题,CORS 对所有 .net core 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);
        }
    

    并在配置方法中添加这一行app.UseCors("CorsPolicy");

    因此,如果 CORS 工作,那么之后,而不是 .AllowAnyOrigin() 添加 .WithOrigins("yourdomain") 和它

    欲了解更多信息,请参阅:https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2

    【讨论】:

      猜你喜欢
      • 2020-01-24
      • 2018-12-27
      • 2019-12-20
      • 2021-02-25
      • 2020-11-02
      • 2013-09-29
      • 2019-11-23
      • 2020-01-21
      • 2015-10-08
      相关资源
      最近更新 更多