当前位置: 首页 > news >正文

springmvc跨域解决方案

在Spring MVC中处理跨域请求(CORS,Cross-Origin Resource Sharing)通常涉及到配置HTTP响应头,以允许来自不同源的请求。Spring MVC提供了多种方式来配置CORS,包括全局配置和局部配置。

  1. 使用@CrossOrigin注解
    在控制器的方法上使用@CrossOrigin注解是最简单的方法之一。
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@CrossOrigin(origins = "http://example.com", maxAge = 3600)@GetMapping("/data")public MyData getData() {return new MyData("Some Data");}
}
  1. 配置WebMvcConfigurer
    如果你想要全局配置CORS,可以通过实现WebMvcConfigurer接口并重写addCorsMappings方法来实现。
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 WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**") // 匹配所有路径.allowedOrigins("http://example.com") // 允许的源.allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的方法.allowedHeaders("*") // 允许的头部.allowCredentials(true) // 是否发送cookies.maxAge(3600); // 预检请求的缓存时间(秒)}
}
  1. 使用GlobalCorsConfigurationSource和CorsFilter
    如果你想要更细粒度的控制或者需要在非Spring MVC环境中应用CORS,可以使用GlobalCorsConfigurationSource和CorsFilter。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import java.util.Arrays;@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true);config.setAllowedOrigins(Arrays.asList("http://example.com")); // 允许的源列表config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE")); // 允许的方法列表config.setAllowedHeaders(Arrays.asList("*")); // 允许的头部列表,使用*表示接受所有头部信息source.registerCorsConfiguration("/**", config); // 对所有路径应用此配置return new CorsFilter(source);}
}
  1. 使用@CrossOrigin在全局配置中启用默认配置(不推荐)
    虽然不推荐在生产环境中使用全局的@CrossOrigin注解(因为它可能会影响到所有的接口),但在开发阶段或者在测试环境中,可以这样做:
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.context.annotation.*;
import org.springframework.*;
import java.*; // 注意:这里的导入只是为了示例,实际开发中应避免使用通配符导入所有包。
import static java.*; // 同上。
import javax.*; // 同上。
import org.*; // 同上。注意:尽量避免使用通配符导入所有包。正确的做法是只导入需要的包。例如:import org.springframework.*。这里的写法仅为示例,实际开发中请避免。正确的做法是:import org.springframework.*; import javax.*; import java.*; import java.*; import static java.*; import static javax.*; import static org.*; 这样写只是为了示例,实际开发中请避免使用通配符导入所有包。正确的做法是:只导入需要的包。例如:import org.*; 但请注意,这里的写法只是为了示例,实际开发中请
http://www.dtcms.com/a/284000.html

相关文章:

  • RAG实战指南 Day 18:Chroma、Milvus与Pinecone实战对比
  • 基于springboot+vue+mysql框架的工作流程管理系统的设计与实现(源码+论文+PPT答辩)
  • 23种设计模式--#2单例模式
  • 从AWS MySQL数据库下载备份到S3的完整解决方案
  • ros2 标定相机
  • 企业级网络综合集成实践:VLAN、Trunk、STP、路由协议(OSPF/RIP)、PPP、服务管理(TELNET/FTP)与安全(ACL)
  • CKS认证 | Day6 监控、审计和运行时安全 sysdig、falco、审计日志
  • Redis主从复制数据同步实现原理详细介绍
  • UML用例规范,use case diagram
  • 灵易智模中的重构导出可以做什么
  • Jmeter使用 -1
  • c++项目从aws服务器转移到mac编译
  • Spring Boot 自动配置:从 spring.factories 到 AutoConfiguration.imports 的演变
  • 深入理解 SemaphoreSlim 在.NET Core API 开发中的应用
  • 【DOCKER】综合项目 MonitorHub (监控中心)
  • Java集合处理库——collection-complete
  • 模型材质一键替换~轻松还原多种三维场景
  • Jmeter的安装
  • ESP32——基于idf框架开发I2C设备
  • Redis红锁中的看门狗机制
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘flask’问题
  • 【SpringBoot】实战-开发接口-用户-登录
  • APIs案例及知识点串讲(中)
  • docker--安装--原理
  • 寻找数组中的多数元素:HashMap方法解析
  • 【无标题】构建黑洞虚维度空间的完整理论
  • COZE官方文档基础知识解读第五期 —— 插件
  • Android默认背光亮度配置说明
  • 如何清除 npm 缓存
  • web前端渡一大师课 CSS属性计算过程