Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular K8s/CORS问题REST服务器_Angular_Kubernetes_.net Core_Cors - Fatal编程技术网

Angular K8s/CORS问题REST服务器

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

我遇到了一个CORS问题,在k8s中运行了一个有角度的前端和一个C#REST层。我对CORS有一个大致的了解,并且理解下面的错误消息。我需要帮助修理它

来自UI的错误

已阻止跨源请求:同一源策略不允许读取位于的远程资源

在集群中,我有一个数据库、.net core RESTful API和一个Angular UI(运行在nginx上),每个pod都有一个服务。我通过服务名称和端口与堆栈中的每一层通信

我在我的REST层中启用了任何orgin,这是我所理解的一种不好的做法

        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的so
ng serve
也将设置将
/api
路由转发到适当的开发端点是有意义的


某些入口控制器还支持在通过HTTP提供的端点上设置CORS头,因此您不会在API服务中设置CORS头,而是在定义集群外部HTTP端点和路由的基础结构/部署配置中设置CORS头。例如,请参见。

在生产中,您只允许某些域/方法/标题。这很有道理。谢谢你的信息!