首页 > 解决方案 > 带有 Angular 的 CORS 起源

问题描述

我在 Angular 上遇到了 CORS Origin 的问题……我的项目部署在 DigitalOcean 上的 kluster kubernetes 中。

例如,我可以使用这个服务: http: //167.172.13.45 :8889 (它可以工作)和 Postman。

我在 Angular 8 中的服务

@Injectable()
export class CategoriesService {

  public apiUrl: string;

  private categories:string = environment.categories;

  constructor(private http: HttpClient) { }
  
  getAllCategories(page:number){
    return this.http.get(this.categories+"/public/v1");
  }
}

我的环境

出口常量环境= {生产:假,类别:'/类别'};

还有我的代理...

{
    "/categories/*": {
      "target": "http://167.172.13.45:8889",
      "secure": true,
      "logLevel": "debug",
      "changeOrigin": true
    }
  }

任何人都可以发现尝试帮助我吗?为什么不工作我自己的项目?来自 digitalocean 的任何 Kubernetes 使用指南。

标签: angularkubernetesdigital-ocean

解决方案


我解决了这个问题,在我的 SpringBoot 项目中添加了以下类。

@Component
public class XClacksOverhead implements Filter {
    
  @Override
  public void doFilter(ServletRequest req, ServletResponse res,
      FilterChain chain) throws IOException, ServletException {

      HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
        response.setHeader("Access-Control-Allow-Methods", "GET,POST,PATCH,DELETE,PUT,OPTIONS");
        response.setHeader("Access-Control-Allow-Headers", "*");
        response.setHeader("Access-Control-Max-Age", "86400");
        chain.doFilter(req, res);
  }

  @Override
  public void destroy() {}

  @Override
  public void init(FilterConfig arg0) throws ServletException {}

}

推荐阅读