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日

相关文章

  • Maven项目继承实现过程图解

    下面是关于”Maven项目继承实现过程图解”的完整攻略: 1. 什么是Maven项目继承? Maven项目继承是一种将一个父项目的依赖关系和配置信息传递给子项目的机制。这意味着子项目可以从父项目中继承通用的设置,同时还可以定义自己的独特属性,以适应其特定的需求。 2. Maven项目继承实现过程 Maven项目继承的实现过程主要包括以下几个步骤: 2.1. …

    Java 2023年5月20日
    00
  • Java String保存字符串的机制

    Java使用String类来保存字符串,String类在Java中被广泛使用。在Java中,字符串是不可变的(immutable)对象,这意味着一旦字符串对象被创建,就不能修改其值。String类用来表示字符串,它保存在常量池(constant pool)中,常量池是Java虚拟机中的一个系统级的内存池,它用来保存器内部需要用到的各种常量,包括字符串常量。 …

    Java 2023年5月20日
    00
  • Java 实现栈的三种方式

    下面是详细讲解“Java 实现栈的三种方式”的完整攻略。 1. 栈的概述 栈(Stack)是一种常见的操作系统模型,具有“先进后出”(Last In First Out)的特点。栈被广泛应用于函数调用、表达式求值、程序递归等领域,是算法和数据结构中必不可少的基本数据结构之一。 栈的基本操作包含了入栈(push)、出栈(pop)、获取栈顶元素(peek)等。实…

    Java 2023年5月18日
    00
  • Java实战在线选课系统的实现流程

    Java实战在线选课系统的实现流程 本文主要介绍Java实战在线选课系统的实现流程。在这个系统中,用户可以浏览课程列表、查看课程详情、选课、取消选课等操作。系统采用Java Web技术实现,包括前端使用HTML、CSS和JavaScript,后端使用Spring框架、MyBatis框架和MySQL数据库。 前端实现 前端主要实现用户界面,包括课程列表展示和课…

    Java 2023年5月24日
    00
  • Java 函数式编程梳理

    Java 函数式编程梳理攻略 什么是函数式编程? 函数式编程是一种编程范式,它将计算视为函数的求值。函数式编程强调使用不可变的值和函数,避免使用可变的状态和副作用。 Java 函数式编程的特性 Java 8 是Java中引入函数式编程的版本,通过Java语言的Lambda表达式支持了函数式编程。Java 8中最显著的函数式编程特性如下: Lambda表达式 …

    Java 2023年5月23日
    00
  • Java基础之创建虚拟机对象的过程详细总结

    首先我们需要了解Java创建虚拟机对象的过程。当使用new关键字创建一个对象的时候,Java虚拟机需要经过以下几个步骤: 1.检查是否已经加载该类,如果没有,则加载它。 2.检查该类是否继承自其它类或实现了接口,如果有,则需要先加载这些父类和接口。 3.为对象分配内存空间。 4.对内存空间进行必要的初始化。 5.调用对象的构造方法对对象进行初始化。 下面是两…

    Java 2023年5月26日
    00
  • Spring Security 基于URL的权限判断源码解析

    Spring Security 是一项广泛使用的安全框架,它提供了诸如认证、授权等功能,同时也允许开发者轻松地进行自定义权限控制。其中,基于 URL 的权限判断是 Spring Security 的重要特性之一,通过它,可以对访问特定 URL 的用户进行限制。 在本攻略中,我们将介绍 Spring Security 基于 URL 的权限判断实现的源码解析过程…

    Java 2023年5月20日
    00
  • 基于Java生成GUID的实现方法

    基于Java生成GUID的实现方法 GUID(即全局唯一标识符)是一种算法,用于在计算机系统中生成唯一的标识符。本文将介绍在Java中生成GUID的实现方法。 UUID类 Java提供了一个UUID类,可以用于生成GUID。UUID是一个128位数字,通常用32个十六进制数表示。它有几个版本,其中最常用的是版本4(在Java中对应的是randomUUID()…

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