使用Spring Boot实现跨域资源共享(CORS)

简介: 使用Spring Boot实现跨域资源共享(CORS)

使用Spring Boot实现跨域资源共享(CORS)

1. CORS概述

跨域资源共享(CORS)是一种机制,允许Web应用程序从不同的域访问其资源。在开发Web应用时,经常需要处理跨域请求,例如从前端应用(如JavaScript)向后端API发送请求。Spring Boot提供了简单而强大的方式来配置CORS策略,以便安全地处理跨域请求。

2. 使用Spring Boot配置CORS

在Spring Boot中配置CORS可以通过WebMvcConfigurer接口来实现。下面是一个示例,演示如何配置全局CORS策略。

2.1 创建配置类
package cn.juwatech.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://localhost:8080") // 允许的源,可以设置为具体的域名或IP及端口号
                .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的HTTP方法
                .allowedHeaders("*") // 允许的请求头
                .allowCredentials(true) // 是否支持发送Cookie
                .maxAge(3600); // 预检请求的有效期,单位秒
    }
}
2.2 配置说明
  • allowedOrigins:指定允许访问的源,可以是具体的域名(如http://localhost:8080)或 *(表示允许任意源)。
  • allowedMethods:指定允许的HTTP方法,如GET、POST等。
  • allowedHeaders:指定允许的请求头,* 表示允许所有请求头。
  • allowCredentials:指定是否支持发送Cookie,如果需要支持跨域的Session,则需要设置为true。
  • maxAge:设置预检请求(OPTIONS请求)的有效期,单位为秒。

3. 在Controller中使用CORS

除了全局配置外,还可以在单个Controller或方法级别配置CORS。下面是一个示例:

package cn.juwatech.controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@CrossOrigin(origins = "http://localhost:8080")
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, CORS!";
    }
}

在上面的示例中,@CrossOrigin注解指定了允许访问的源,这会覆盖全局配置中的设置。

4. 测试CORS设置

为了测试CORS设置是否生效,可以使用浏览器的开发者工具或者Postman等工具发送跨域请求。确保请求的来源、方法、请求头等与配置一致,以验证CORS策略是否按预期工作。

5. 总结

通过本文,你学习了如何在Spring Boot中实现跨域资源共享(CORS)。通过配置全局策略或在Controller级别使用@CrossOrigin注解,可以轻松地管理跨域请求,确保Web应用程序的安全性和可访问性。

相关文章
|
1月前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
313 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
1月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
|
2月前
|
安全
CORS 跨域资源共享的实现原理
CORS 跨域资源共享的实现原理
|
3月前
|
安全 前端开发 Java
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
在Web安全上下文中,源(Origin)是指一个URL的协议、域名和端口号的组合。这三个部分共同定义了资源的来源,浏览器会根据这些信息来判断两个资源是否属于同一源。例如,https://www.example.com:443和http://www.example.com虽然域名相同,但由于协议和端口号不同,它们被视为不同的源。同源(Same-Origin)是指两个URL的协议、域名和端口号完全相同。只有当这些条件都满足时,浏览器才认为这两个资源来自同一源,从而允许它们之间的交互操作。
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
|
3月前
|
安全 开发者 UED
|
Java
SpringBoot 2.7.0 处理跨域的问题
SpringBoot 2.7.0 处理跨域的问题
734 0
|
Java
SpringBoot 2.6.7 处理跨域的问题
SpringBoot 2.6.7 处理跨域的问题
292 0
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
134 1
|
15天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
94 62
|
13天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
31 2