Angular K8s/CORS问题REST服务器
我遇到了一个CORS问题,在k8s中运行了一个有角度的前端和一个C#REST层。我对CORS有一个大致的了解,并且理解下面的错误消息。我需要帮助修理它 来自UI的错误 已阻止跨源请求:同一源策略不允许读取位于的远程资源 在集群中,我有一个数据库、.net core RESTful API和一个Angular UI(运行在nginx上),每个pod都有一个服务。我通过服务名称和端口与堆栈中的每一层通信 我在我的REST层中启用了任何orgin,这是我所理解的一种不好的做法Angular K8s/CORS问题REST服务器,angular,kubernetes,.net-core,cors,Angular,Kubernetes,.net Core,Cors,我遇到了一个CORS问题,在k8s中运行了一个有角度的前端和一个C#REST层。我对CORS有一个大致的了解,并且理解下面的错误消息。我需要帮助修理它 来自UI的错误 已阻止跨源请求:同一源策略不允许读取位于的远程资源 在集群中,我有一个数据库、.net core RESTful API和一个Angular UI(运行在nginx上),每个pod都有一个服务。我通过服务名称和端口与堆栈中的每一层通信 我在我的REST层中启用了任何orgin,这是我所理解的一种不好的做法 publ
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//app.UseHttpsRedirection();
app.UseRouting();
app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
我研究了几种不同的方法,其中一个例子如下:
我不明白的是如何以“安全生产”的方式做到这一点。这意味着,如果这是一个生产环境,我将如何启用UI/REST之间的通信,并为集群内的环境实施良好的安全实践?即使这在我的环境中是不可能的,知道我应该为什么而拍摄也会很有帮助,而不是“只是让它工作”
谢谢 在kubernetes中组装应用程序时,您应该尝试使用定义使同一域上的所有服务可用 例如,如果您有一个用于承载API的.NET应用程序的后端服务+部署和一个承载前端的服务+部署(例如,nginx+生成输出
ng build--prod
),它可能看起来像:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-application
spec:
rules:
- host: www.example.com
http:
paths:
- path: /api
backend:
serviceName: api-service
servicePort: 80
- path: /
backend:
serviceName: frontend
servicePort: 80
这样的设置将消除跨源问题,因为对于使用站点的浏览器,所有URL都将位于同一个源
对于这种环境的开发,使用Angular的song serve
也将设置将/api
路由转发到适当的开发端点是有意义的
某些入口控制器还支持在通过HTTP提供的端点上设置CORS头,因此您不会在API服务中设置CORS头,而是在定义集群外部HTTP端点和路由的基础结构/部署配置中设置CORS头。例如,请参见。在生产中,您只允许某些域/方法/标题。这很有道理。谢谢你的信息!