YARP 跨域请求 (CORS)

介绍

反向代理可以在代理到目标服务器之前处理跨域请求。 这可以减少目标服务器上的负载,并确保在应用程序中实现一致的策略。

违约

除非在路由器或应用程序配置中启用,否则这些请求不会针对 cors 预检请求自动进行匹配。

配置

可以通过 RouteConfig.CorsPolicy 为每个路由指定 CORS 策略,并且可以从配置文件的 Routes 部分绑定。 与其他路由属性一样,无需重启代理即可修改和重新加载此属性。 策略名称不区分大小写。

例:

{
  "ReverseProxy": {
    "Routes": {
      "route1" : {
        "ClusterId": "cluster1",
        "CorsPolicy": "customPolicy",
        "Match": {
          "Hosts": [ "localhost" ]
        }
      }
    },
    "Clusters": {
      "cluster1": {
        "Destinations": {
          "cluster1/destination1": {
            "Address": "https://localhost:10001/"
          }
        }
      }
    }
  }
}

CORS 策略 是代理利用的 ASP.NET 核心概念。 代理提供上述配置来指定每个路由的策略,其余配置由现有 ASP.NET Core CORS 中间件处理。

可以在应用程序中配置 CORS 策略,如下所示:

services.AddCors(options =>
{
    options.AddPolicy("customPolicy", builder =>
    {
        builder.AllowAnyOrigin();
    });
});

然后添加 CORS 中间件。

app.UseCors();

app.MapReverseProxy();

默认策略

在路由的 default 参数中指定值 CorsPolicy 意味着路由将使用 CorsOptions.DefaultPolicy中定义的策略。

禁用 CORS

在路由的 disable 参数中指定值 CorsPolicy 意味着 CORS 中间件将拒绝 CORS 请求。