跨域请求(CORS)
反向代理可以在将跨域请求代理到目标服务器之前对其进行处理
简介
反向代理可以在跨域请求被代理到目标服务器之前先对其进行处理。这样可以减轻目标服务器的负载,并确保各个应用程序之间实施一致的策略。
默认设置
除非在路由或应用程序配置中启用了该功能,否则请求不会被自动匹配为 CORS 预检请求。
配置
可以通过 RouteConfig.CorsPolicy 为每个路由指定 CORS 策略,并且可以从配置文件的 Routes 部分绑定该设置。与其他路由属性一样,该设置也可以在不重启代理的情况下进行修改和重新加载。策略名称不区分大小写。
示例:
JSON{
"ReverseProxy": {
"Routes": {
"route1" : {
"ClusterId": "cluster1",
"CorsPolicy": "customPolicy",
"Match": {
"Hosts": [ "localhost" ]
}
}
},
"Clusters": {
"cluster1": {
"Destinations": {
"cluster1/destination1": {
"Address": "https://localhost:10001/"
}
}
}
}
}
}
CORS policies are an ASP.NET Core concept that the proxy utilizes. The proxy provides the
above configuration to specify a policy per route and the rest is handled by existing ASP.NET
Core CORS Middleware.
CORS policies can be configured in the application as follows:
services.AddCors(options =>
{
options.AddPolicy("customPolicy", builder =>
{
builder.AllowAnyOrigin();
});
});
Then add the CORS middleware.
app.UseCors();
app.MapReverseProxy();DefaultPolicy
在路由的 CorsPolicy 参数中指定值 default,意味着该路由将使用 CorsOptions.DefaultPolicy 中定义的策略。
禁用 CORS
在路由的 CorsPolicy 参数中指定值 disable,意味着 CORS 中间件将拒绝该路由的 CORS 请求。
说明
本文作者在 AI 协助下创作了这篇文章。了解更多信息
改编自 Microsoft Learn ,遵循 CC BY 4.0 许可协议。