【发布时间】:2020-09-11 07:37:23
【问题描述】:
我遇到了一个使用 Angular 前端和在 k8s 中运行的 C# REST 层的 CORS 问题。我对 CORS 有一个大致的了解,并且理解以下错误消息的含义。我需要帮助修复它。
来自用户界面的错误。
跨域请求被阻止:同源策略不允许读取位于http://auth-svc:8080/api/auth 的远程资源。
在集群中,我有一个数据库、.net 核心 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();
});
}
我研究了几种不同的方法,这里有一个例子: Angular/C# CORS Issue
我不明白如何以“生产安全”的方式做到这一点。这意味着如果这是一个生产环境,我将如何启用 UI/REST 之间的通信并为集群内的环境实施良好的安全实践?即使这在我的环境中是不可能的,但知道我应该拍摄什么而不是“让它工作”会很有帮助。
谢谢!
【问题讨论】:
-
在生产中您只允许某些域/方法/标头
标签: angular kubernetes .net-core cors