详解springboot解决CORS跨域的三种方式

详解Spring Boot解决CORS跨域的三种方式

在Web应用程序中,我们经常需要解决CORS(跨域资源共享)问题。CORS是一种安全机制,用于限制跨域访问。本文将详细讲解Spring Boot解决CORS跨域的三种方式,并提供两个示例。

1. 添加依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>

在上面的代码中,我们添加了Spring Boot Web依赖。

2. 示例1:使用注解解决CORS跨域

以下是使用注解解决CORS跨域的基本流程:

  1. 在Controller类或方法上添加@CrossOrigin注解。
@RestController
public class MyController {

    @CrossOrigin(origins = "http://localhost:8080")
    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }

}

在上面的代码中,我们在MyController类上添加了@CrossOrigin注解,并指定了允许跨域访问的源地址。

  1. 运行应用程序,并访问跨域接口。

在上面的代码中,我们运行应用程序,并访问跨域接口。由于我们在Controller类上添加了@CrossOrigin注解,因此可以正常访问跨域接口。

3. 示例2:使用WebMvcConfigurer解决CORS跨域

以下是使用WebMvcConfigurer解决CORS跨域的基本流程:

  1. 创建一个名为CorsConfig的配置类,并实现WebMvcConfigurer接口。
@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedOrigins("http://localhost:8080")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3600);
    }

}

在上面的代码中,我们创建了一个名为CorsConfig的配置类,并实现了WebMvcConfigurer接口。我们重写了addCorsMappings方法,并使用CorsRegistry对象配置跨域访问的相关信息。

  1. 运行应用程序,并访问跨域接口。

在上面的代码中,我们运行应用程序,并访问跨域接口。由于我们在CorsConfig类中配置了跨域访问的相关信息,因此可以正常访问跨域接口。

4. 示例3:使用Filter解决CORS跨域

以下是使用Filter解决CORS跨域的基本流程:

  1. 创建一个名为CorsFilter的Filter类,并实现Filter接口。
@Component
public class CorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse res = (HttpServletResponse) response;
        res.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");
        res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        res.setHeader("Access-Control-Allow-Headers", "*");
        res.setHeader("Access-Control-Allow-Credentials", "true");
        res.setHeader("Access-Control-Max-Age", "3600");
        chain.doFilter(request, response);
    }

}

在上面的代码中,我们创建了一个名为CorsFilter的Filter类,并实现了Filter接口。我们重写了doFilter方法,并使用HttpServletResponse对象设置跨域访问的相关信息。

  1. 在Spring Boot应用程序中注册CorsFilter。
@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

    @Bean
    public FilterRegistrationBean<CorsFilter> corsFilterRegistration() {
        FilterRegistrationBean<CorsFilter> registration = new FilterRegistrationBean<>();
        registration.setFilter(new CorsFilter());
        registration.addUrlPatterns("/*");
        registration.setName("corsFilter");
        registration.setOrder(1);
        return registration;
    }

}

在上面的代码中,我们在Spring Boot应用程序中注册了CorsFilter,并设置了相关的配置信息。

  1. 运行应用程序,并访问跨域接口。

在上面的代码中,我们运行应用程序,并访问跨域接口。由于我们在CorsFilter类中设置了跨域访问的相关信息,因此可以正常访问跨域接口。

5. 总结

本文详细讲解了Spring Boot解决CORS跨域的三种方式,并提供了两个示例。在解决CORS跨域问题时,我们应根据实际需求选择合适的方式,并合理配置相关信息,以提高应用程序的可用性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解springboot解决CORS跨域的三种方式 - Python技术站

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

相关文章

  • Sprigmvc项目转为springboot的方法

    下面是关于“SpringMVC项目转为Spring Boot的方法”的完整攻略,包含两个示例说明。 SpringMVC项目转为Spring Boot的方法 Spring Boot是一个基于Spring框架的快速开发Web应用程序的工具,可以帮助我们快速构建和部署Web应用程序。本文将介绍如何将SpringMVC项目转为Spring Boot。 添加依赖 首先…

    Java 2023年5月17日
    00
  • Spring Cloud Data Flow初体验以Local模式运行

    以下是“Spring Cloud Data Flow初体验以Local模式运行”的完整攻略。 准备工作 首先需要创建一个Spring Boot项目,并添加如下依赖: <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> …

    Java 2023年5月20日
    00
  • Maven引用自定义jar包方式

    以下是使用 Maven 引用自定义 JAR 包的完整攻略: 1. 使用项目本地依赖库 如果你的 JAR 包已经是 Maven 项目,可以使用 Maven 提供的本地依赖库功能。在项目中,将 JAR 包命名为 <artifactId>-<version>.jar,并放在项目的 /lib 目录下,这样 Maven 就会将其加入本地依赖库中…

    Java 2023年5月19日
    00
  • 利用js制作html table分页示例(js实现分页)

    下面是利用 js 制作 HTML table 分页示例的攻略。 一、分页概述 分页是指将大量的记录拆分成若干个页面进行展示,以减轻页面压力,提高页面加载速度。在实际开发中,我们通常会使用后端语言来实现分页,比如常用的 PHP 分页。但是,为了提高用户体验,我们也可以使用前端语言 JavaScript 来实现分页。 具体的,我们可以使用js将数据分成若干页,然…

    Java 2023年6月16日
    00
  • MyBatis中的JdbcType映射使用详解

    1. 什么是JdbcType映射 在MyBatis中,默认情况下,MyBatis会自动根据JavaBean属性的类型来映射到对应的JdbcType数据类型。但是在某些情况下,根据JavaBean属性的类型无法满足实际需求,这个时候你可以通过手动进行JdbcType映射。 2. 如何进行JdbcType映射 在MyBatis中可以通过两种方式进行JdbcTyp…

    Java 2023年5月19日
    00
  • 浅谈MyBatis执行SQL的两种方式

    来详细讲解一下“浅谈MyBatis执行SQL的两种方式”。 什么是MyBatis? MyBatis是一个将SQL语句与Java对象进行映射的持久层框架,它将SQL语句、结果集映射、参数映射等操作进行了封装,使我们在编写SQL时更加方便灵活。 MyBatis的执行方式可以分为两种:基于XML的Mapper文件和注解。 基于XML的Mapper文件 配置文件 在…

    Java 2023年5月19日
    00
  • Tomcat 6.0下如何配置环境变量基本步骤分享

    下面是Tomcat 6.0下如何配置环境变量的基本步骤: 步骤一:下载Tomcat 6.0 首先需要从Tomcat的官方网站(https://tomcat.apache.org/download-60.cgi)上下载Tomcat 6.0的安装包。下载完成后,解压至任意路径。 步骤二:设置CATALINA_HOME环境变量 在“计算机”或“我的电脑”上点击右键…

    Java 2023年5月19日
    00
  • JavaScript自定义分页样式

    下面是关于“JavaScript自定义分页样式”的完整攻略: 分页样式选取 在实现自定义分页样式之前,首先需要确定自己想实现什么样的分页样式。一般来说,分页样式可分为两种,一种是原生样式,即浏览器默认的纯文字链接分页样式;另一种则是自定义分页样式,样式多样,可以把分页效果变得更加美观,可以选择自己喜欢的样式,而且自定义分页样式除了可以实现更好的用户体验外,同…

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