将Spring Boot应用程序与Angular应用程序集成

时间:2019-05-07 14:59:07

标签: java angular spring-boot spring-security

我想将Spring Boot应用程序与Angular应用程序集成在一起。这两个应用程序都在不同的服务器上运行。当我尝试从Angular应用程序API中成功命中REST API时,但在UI上收到错误响应。

  

从原点“ http://localhost:9092/jobs/postal/launch”到“ http://localhost:4200”处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-来源的标头出现在请求的资源上。

我在后端实施了CORS协商。因此,我只希望我能够在没有任何安全性的情况下从UI进入后端。

我还阅读了以下文章,以了解CORS和CSRF。

https://markitzeroday.com/x-requested-with/cors/2017/06/29/csrf-mitigation-for-ajax-requests.html

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings( CorsRegistry registry) {
            registry.addMapping(corsMapping)
                .allowedOrigins(allowedOrigins)
                .allowedMethods(allowedMethods).allowedHeaders("X-Requested-With");
        }
    };
}

我只想知道如何成功地将Spring Boot应用程序与Angular应用程序集成。

如果有任何文档或链接可以帮助我,请告诉我。

1 个答案:

答案 0 :(得分:2)

CORS管理对源自部署后端应用程序以外的服务器的请求的访问。由于安全原因,默认情况下将其设置为仅后端托管服务器,这意味着仅允许来自后端托管服务器的请求。

在您的情况下,由于后端和UI都在单独的服务器上运行,因此您需要在后端中添加一些代码更改,以允许UI访问后端。

您可以拥有一个ResourceApplication.java类别,如下所示:

@RequestMapping("/")
@CrossOrigin(origins="*", maxAge=3600)
public Message home() {
  return new Message("Hello World");
}

以上内容摘自spring.io提供的this教程,如果您将spring-boot与angular集成在一起,它是一个很好的指南。如果向下滚动,则会找到CORS部分。