java - Spring Boot 应用程序与 Angular 应用程序的集成

标签 java angular spring-boot spring-security

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

Access to XMLHttpRequest at 'http://localhost:9092/jobs/postal/launch' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我在后端实现了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 应用程序集成。

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

最佳答案

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

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

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

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

以上摘自this教程由 spring.io 提供,如果您将 spring-boot 与 Angular 集成,那么它是一个很好的指南。如果向下滚动,您将找到 CORS 部分。

关于java - Spring Boot 应用程序与 Angular 应用程序的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56025433/

相关文章:

java - 是否可以使用 Spring 和 @Value 注释将 YAML 属性读入 Map

java - 使用 fmt 标签在 jsp 中进行国际化

angular - OPTIONS 获取 401 - 预检请求未通过 Apache 上的访问控制检查

java - 无法在数据库更新时更新当前时间戳

java - 如何使用 JUnit 5 在 Spring Boot 中捕获 Hibernate ConstraintViolationException(或 Spring DataIntegrityViolationException?)

java - 使用 Java Streams 从字符串数字列表中查找最大数字

java - 下一个更大元素的时间复杂度

node.js - 为什么我只在 MAC OSX 中的代理调用上不断收到 ECONNRESET 错误,完全任意的一些成功的调用(非常绝望)

Angular 6 - 指定延迟加载 block 的路径

Java:Spring boot Tomcat 访问日志未在 Tomcat 启动时创建