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

相关文章
|
29天前
|
安全
CORS 跨域资源共享的实现原理
CORS 跨域资源共享的实现原理
|
2月前
|
安全 前端开发 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月前
|
安全
CORS 跨域资源共享的实现原理
CORS 跨域资源共享的实现原理
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的闲置物品共享平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的闲置物品共享平台附带文章源码部署视频讲解等
29 1
|
3月前
|
缓存 前端开发 Java
在Java项目中实现跨域资源共享(CORS)
在Java项目中实现跨域资源共享(CORS)
|
3月前
|
前端开发 JavaScript Java
使用Spring Boot实现跨域资源共享(CORS)
使用Spring Boot实现跨域资源共享(CORS)
|
缓存 前端开发 Java
SpringBoot 缓存&资源优化
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36367789/article/details/81711179 页面缓存 1.
1407 0
|
缓存 前端开发 Java
SpringBoot 缓存&资源优化
页面缓存 1. freemarker 的页面静态化 application.properties 配置实现浏览器缓存 # SPRING RESOURCES HANDLING ([ResourceProperties](https://github.
1290 0
|
10天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
32 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
10天前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
52 1
下一篇
无影云桌面