使用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项目中通过多种方式解决跨域问题。
334 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
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的闲置物品共享平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的闲置物品共享平台附带文章源码部署视频讲解等
40 1
|
4月前
|
缓存 前端开发 Java
在Java项目中实现跨域资源共享(CORS)
在Java项目中实现跨域资源共享(CORS)
|
4月前
|
前端开发 JavaScript Java
使用Spring Boot实现跨域资源共享(CORS)
使用Spring Boot实现跨域资源共享(CORS)
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
1月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
162 2