springboot解决跨域的方式有哪些
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,这篇文章主要介绍"springboot解决跨域的方式有哪些",在日常操作中,相信很多人在springboot解决跨域的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
千家信息网最后更新 2025年02月08日springboot解决跨域的方式有哪些
这篇文章主要介绍"springboot解决跨域的方式有哪些",在日常操作中,相信很多人在springboot解决跨域的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"springboot解决跨域的方式有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
什么是跨域
跨域:指的是浏览器不能执⾏其他⽹站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。
例如:a页⾯想获取b页⾯资源,如果a、b页⾯的协议、域名、端⼝、⼦域名不同,所进⾏的访问⾏动都是跨域的,⽽浏览器
为了安全问题⼀般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器的限制。理解这⼀点
很重要
同源策略:是指协议,域名,端⼝都要相同,其中有⼀个不同都会产⽣跨域;
springboot解决跨域的几种方式
方法一、SpringBoot的注解@CrossOrigin
直接在Controller方法或者类上增加@CrossOrigin注解,SpringMVC使用@CrossOrigin使用场景要求 jdk1.8+ Spring4.2+
@GetMapping("/hello")@CrossOriginpublic String hello() { return "hello:" + simpleDateFormat.format(new Date());}
方式二:使用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;@Configurationpublic class ConfigConfiguration { @Bean public CorsFilter CorsFilter() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOriginPattern("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.setAllowCredentials(true); UrlBasedCorsConfigurationSource ub = new UrlBasedCorsConfigurationSource(); ub.registerCorsConfiguration("/**", corsConfiguration); return new CorsFilter(ub); }}
方式三:自定义过滤(web filter)的方式
@Componentpublic class CustomFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse res = (HttpServletResponse) servletResponse; // 设置允许Cookie res.addHeader("Access-Control-Allow-Credentials", "true"); // 允许http://www.xxx.com域(自行设置,这里只做示例)发起跨域请求 res.addHeader("Access-Control-Allow-Origin", "*"); // 设置允许跨域请求的方法 res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); // 允许跨域请求包含content-type res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN"); if (((HttpServletRequest) servletRequest).getMethod().equals("OPTIONS")) { servletResponse.getWriter().println("ok"); return; } filterChain.doFilter(servletRequest, servletResponse); }}
方式四:实现WebMvcConfigurer中addCorsMappings方法
import org.springframework.stereotype.Component;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Componentpublic class MyWebMvcConfigurer implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 匹配所有的路径 .allowCredentials(true) // 设置允许凭证 .allowedHeaders("*") // 设置请求头 .allowedMethods("GET", "POST", "PUT", "DELETE") // 设置允许的方式 .allowedOriginPatterns("*"); }}
方法五:采用nginx做动态代理
到此,关于"springboot解决跨域的方式有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
方式
方法
浏览器
浏览
学习
限制
域名
不同
安全
更多
注解
策略
资源
问题
同源
帮助
实用
相同
重要
接下来
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发考研干什么啊
酷开服务器异常
服务器进去是管理员
ipfs 网络技术
汝南智慧城无线网络安全么
国内软件开发中文官方版
江苏互联网软件开发产品介绍
服务器硬盘家用标准
数据库设置关键字排序
es7.6数据库
互联网与科技创新谁重要性
中国咨询行数据库
网络安全专项工作方案范文
推单视频无法获取数据库
软件开发需求在哪里发布
不会数据库好丢脸
ims艾美仕药品数据库
高端文件服务器托管公司
java软件开发要求
姑苏区正规软件开发预算
深圳数创云天软件开发有限公司
早期线性软件开发模型称为
人力资源部网络安全
数据库设置关键字排序
我的世界拉黑服务器指令
计算机与网络技术考试内容
张家港市声光网络技术公司
网络技术公司怎样取名
电脑服务器管理器打不开
直销软件开发啊