我想将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应用程序集成。
如果有任何文档或链接可以帮助我,请告诉我。
答案 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部分。