使用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应用程序的安全性和可访问性。

相关文章
|
6天前
|
前端开发 JavaScript Java
Spring Boot应用中的资源分离与高效打包实践
通过实施资源分离和高效打包策略,不仅可以提升Spring Boot应用的开发和部署效率,还能显著提高用户体验。在实际项目中,根据项目的实际情况和团队的技术栈选择合适的工具和方案是关键。希望本文能为读者在Spring Boot项目中实现资源分离和高效打包提供一些有价值的参考。
12 0
|
20天前
|
存储 前端开发 Java
SpringBoot使用云端资源url下载文件的接口写法
在Spring Boot中实现从云端资源URL下载文件的功能可通过定义REST接口完成。示例代码展示了一个`FileDownloadController`,它包含使用`@GetMapping`注解的方法`downloadFile`,此方法接收URL参数,利用`RestTemplate`下载文件,并将文件字节数组封装为`ByteArrayResource`返回给客户端。此外,通过设置HTTP响应头,确保文件以附件形式下载。这种方法适用于从AWS S3或Google Cloud Storage等云服务下载文件。
118 7
|
6天前
|
安全 前端开发 Java
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
在Web安全上下文中,源(Origin)是指一个URL的协议、域名和端口号的组合。这三个部分共同定义了资源的来源,浏览器会根据这些信息来判断两个资源是否属于同一源。例如,https://www.example.com:443和http://www.example.com虽然域名相同,但由于协议和端口号不同,它们被视为不同的源。同源(Same-Origin)是指两个URL的协议、域名和端口号完全相同。只有当这些条件都满足时,浏览器才认为这两个资源来自同一源,从而允许它们之间的交互操作。
Web端系统开发解决跨域问题——以Java SpringBoot框架配置Cors为例
|
21天前
|
安全
CORS 跨域资源共享的实现原理
CORS 跨域资源共享的实现原理
SpringBoot通过Cors解决跨域问题(三十一)下
SpringBoot通过Cors解决跨域问题(三十一)下
188 0
SpringBoot通过Cors解决跨域问题(三十一)下
|
前端开发 安全 JavaScript
SpringBoot通过Cors解决跨域问题(三十一)上
SpringBoot通过Cors解决跨域问题(三十一)上
248 0
SpringBoot通过Cors解决跨域问题(三十一)上
|
4天前
|
SQL JavaScript 前端开发
vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)
这篇文章详细介绍了如何在Vue.js中使用分页组件展示从数据库查询出来的数据,包括前端Vue页面的表格和分页组件代码,以及后端SpringBoot的控制层和SQL查询语句。
vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)
|
3天前
|
前端开发 JavaScript Java
SpringBoot+Vue+token实现(表单+图片)上传、图片地址保存到数据库。上传图片保存位置自己定义、图片可以在前端回显(一))
这篇文章详细介绍了在SpringBoot+Vue项目中实现表单和图片上传的完整流程,包括前端上传、后端接口处理、数据库保存图片路径,以及前端图片回显的方法,同时探讨了图片资源映射、token验证、过滤器配置等相关问题。
|
3天前
|
前端开发 数据库
SpringBoot+Vue+token实现(表单+图片)上传、图片地址保存到数据库。上传图片保存位置到项目中的静态资源下、图片可以在前端回显(二))
这篇文章是关于如何在SpringBoot+Vue+token的环境下实现表单和图片上传的优化篇,主要改进是将图片保存位置从磁盘指定位置改为项目中的静态资源目录,使得图片资源可以跨环境访问,并在前端正确回显。
|
3天前
|
前端开发 数据库
SpringBoot+Vue实现商品不能重复加入购物车、购物车中展示商品的信息、删除商品重点提示等操作。如何点击图片实现图片放大
这篇文章介绍了如何在SpringBoot+Vue框架下实现购物车功能,包括防止商品重复加入、展示商品信息、删除商品时的提示,以及点击图片放大的前端实现。
SpringBoot+Vue实现商品不能重复加入购物车、购物车中展示商品的信息、删除商品重点提示等操作。如何点击图片实现图片放大