SpringBoot 中实现跨域的5种方式小结

下面是实现Spring Boot中跨域的5种方式的详细攻略:

1. Spring Boot官方文档提供的方式

在Spring Boot官方文档中提供了一个全局配置方式,只需要在配置文件application.properties中添加以下一行配置即可:

spring.mvc.cors.allowed-origins=*

这种方式的实现比较简单,适合跨域要求不高的项目。

2. 使用@CrossOrigin注解

在Controller的方法上使用@CrossOrigin注解即可实现跨域访问,示例如下:

@RestController
public class UserController {

  @GetMapping("/users")
  @CrossOrigin(origins = "*", maxAge = 3600)
  public List<User> getUsers() {
    //...
  }
}

使用@CrossOrigin注解比较灵活,可以按照具体的需求设置允许的来源和允许的请求方式。

3. 使用WebMvcConfigurer配置类

可以通过编写WebMvcConfigurer配置类实现跨域,具体代码如下:

@Configuration
public class WebMvcConfigurer implements WebMvcConfigurer {

  @Override
  public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
      .allowedOrigins("*")
      .allowedMethods("*")
      .allowedHeaders("*");
  }
}

这种方式比较灵活,可以自定义添加允许的来源、请求方式和头信息,适合需要更为细致的跨域需求。

4. 使用Filter过滤器

通过编写Filter过滤器实现跨域也比较简单,具体代码如下:

@Component
public class CorsFilter implements Filter {

  @Override
  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) res;
    HttpServletRequest request = (HttpServletRequest) req;
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
    chain.doFilter(request, response);
  }
}

可以灵活设置允许的来源、请求方式和头信息,同样适合更为细致的跨域需求。

5. 使用CorsProcessor实现

除了以上方式外,Spring Boot还提供了一种更为灵活的方式,可以通过编写自定义的CorsProcessor实现跨域访问,具体代码如下:

@Configuration
public class CorsConfig {

  @Bean
  public CorsProcessor corsProcessor() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowedOrigins(Collections.singletonList("*"));
    config.setAllowedMethods(Arrays.asList("GET", "POST", "DELETE", "OPTIONS"));
    config.setAllowedHeaders(Collections.singletonList("*"));
    source.registerCorsConfiguration("/**", config);
    return new DefaultCorsProcessor();
  }
}

这种方式更加灵活,可以自定义实现更为细致和严格的跨域规则。

以上就是Spring Boot中实现跨域的5种方式,针对不同的需求可以选择不同的方式实现跨域。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot 中实现跨域的5种方式小结 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 从0开始学习大数据之java spark编程入门与项目实践

    从0开始学习大数据之Java Spark编程入门与项目实践攻略 前言 在大数据时代,数据量和数据处理的复杂性不断增加,需要更加高效和灵活的处理方式。Apache Spark作为当前最流行的大数据处理框架之一,优化了Hadoop MapReduce的不足,支持复杂的数据处理,具有高效、可扩展、易用、友好的API等特点,因此成为很多企业和个人的选择。本文将详细介…

    Java 2023年5月19日
    00
  • jdbc中自带MySQL 连接池实践示例

    下面是 “jdbc中自带MySQL 连接池实践示例” 的详细攻略: 准备工作 下载并安装 MySQL 数据库,创建一个名为 test 的数据库并创建一个名为 user 的表,包含 id、name、age 三个字段。 下载并安装 JDK,确认环境变量配置正确。 示例一:使用 DriverManager 方式连接数据库 导入 JDBC 驱动 // 导入MySQL…

    Java 2023年6月16日
    00
  • java实现构造无限层级树形菜单

    Java实现构造无限层级树形菜单的攻略 背景 在Web开发中,经常会用到树形菜单,这种菜单常常存在多级目录结构,是一种比较典型和重要的web组件。如何实现树形菜单呢? 算法 实现树形菜单的算法其实比较简单,一般情况下采用递归的方式实现。基本思路是:先找到父节点,再找到其下面的子节点,然后再利用递归进行处理,以此达到构造完整的树形结构。 代码示例 下面给出一个…

    Java 2023年5月19日
    00
  • jetty运行时无法保存文件的解决方法

    问题描述: 在使用Jetty web服务器时,有可能会出现无法保存文件的问题。这主要是由于jetty用户没有足够的权限保存文件。那么如何解决这个问题呢? 解决方法: 以下是“jetty运行时无法保存文件的解决方法”的完整攻略: 为Jetty用户授权。 通常情况下,Jetty运行时使用的是与服务器系统中的其他用户不同的用户账号,这个用户可能没有权限保存文件。因…

    Java 2023年6月16日
    00
  • 优化spring boot应用后6s内启动内存减半

    优化 Spring Boot 应用可以显著降低应用启动进程所需的时间,同时减少内存占用,提高应用的性能。下面是优化 Spring Boot 应用的完整攻略: 1. 去除无用依赖 在应用启动过程中,Spring Boot 会扫描所有的依赖并生成一个应用的依赖关系树。因此,需要仅仅保留应用的所需依赖,去除无用依赖,减小应用的依赖树,加速应用的启动时间。 可以通过…

    Java 2023年6月3日
    00
  • 使用maven方式创建springboot项目的方式

    使用Maven方式创建Spring Boot项目是一种非常常见的方式,本文将详细介绍如何使用Maven创建Spring Boot项目,并提供两个示例。 步骤 以下是使用Maven创建Spring Boot项目的步骤: 安装Maven 首先,我们需要安装Maven。可以从Maven官网下载Maven,并按照官方文档进行安装。 创建Maven项目 使用Maven…

    Java 2023年5月15日
    00
  • Java调用外接设备详解(制卡机)

    Java调用外接设备详解 前言 Java是一种高级编程语言,由于其跨平台的特性以及强大的功能,在各个领域都有广泛的应用。在某些场景下,需要Java调用外接设备的功能以便实现更强大的应用程序。本篇文章就介绍如何使用Java调用制卡机设备来实现制卡。 准备工作 要使用Java调用外接设备,需要借助第三方的驱动程序以及SDK。对于制卡机这种设备,通常都有相应的SD…

    Java 2023年5月20日
    00
  • springMVC的生命周期详解

    Spring MVC的生命周期详解 Spring MVC是什么 Spring MVC 是构建于 Spring Framework 之上的一个与 Servlet API 无关的 Web 框架。相比于传统的 Servlet,使用 Spring MVC 可以更快地开发 Web 应用程序,它也更加灵活、可扩展和可配置。 Spring MVC的生命周期 Spring …

    Java 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部