SpringBoot解决全局和局部跨域问题的两种方式

news/2024/10/30 11:28:35/

前言

在如今前后端分离的开发模式下,跨域是一个非常经典的问题,解决的方式也有很多,比如代理服务器,使用JSONP

我之前也写过一篇解决跨域问题的文章,感兴趣的可以参考:解决Vue前后端跨域问题的多种方式

上面两种解决跨域的办法都是在前端角度的,这次站在后端角度,从全局和局部两个方面解决跨域问题

什么是跨域

所谓的跨域请求就是指:当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域。

解决跨域

后端解决跨域,主要借助cors

局部解决(使用注解)

可以使用注解:@CrossOrigin

该注解开启之后,就可以解决跨域问题,它可以加在controller中,表面这个controller中的全部方法都经过跨域处理,也可以单独加在某个方法上,表示只有这一个方法经过跨域处理

在这里插入图片描述

但是它的默认值为*,也就是默认全部放行,理论来说不太安全

在这里插入图片描述

如果项目里面又多个controller或者多个方法,使用注解就会显得非常鸡肋,如果一个一个加太麻烦了,这时候就可以使用全局注解了

全局解决

原理:创建一个配置类,开启跨域注册,并使用@Configuration注解把这个类当作一个配置注入到项目中

我们可以自由配置请求方式,以及域名权限,请求时间,更加细度的去控制跨域范围

package com.wyh.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @Description: 解决全局跨域* @Author: 魏一鹤* @Date: 2022-11-30 22:44**/@Configuration
public class CorsMapping implements WebMvcConfigurer {@Override/*** 重新跨域支持方法* CorsRegistry  开启跨域注册*/public void addCorsMappings(CorsRegistry registry) {//addMapping 添加可跨域的请求地址registry.addMapping("/**")//设置跨域 域名权限 规定由某一个指定的域名+端口能访问跨域项目.allowedOrigins("*")//是否开启cookie跨域.allowCredentials(false)//规定能够跨域访问的方法类型.allowedMethods("GET","POST","DELETE","PUT","OPTIONS")//添加验证头信息  token//.allowedHeaders()//预检请求存活时间 在此期间不再次发送预检请求.maxAge(3600);}
}

注意:千万不要忘了@Configuration注解,不然配置是无效的!!!

在这里插入图片描述

总结

以上就是SpringBoot解决全局和局部跨域问题的两种方式了,根据自己的需求灵活选择即可!


http://www.ppmy.cn/news/9813.html

相关文章

YOLOv5 CPU实时的实例分割教程-它来了!

一个不知名大学生,江湖人称菜狗original author: jacky LiEmail : 3435673055qq.comTime of completion:2023.1.6Last edited: 2023.1.6YOLOv5 CPU实时的实例分割教程-它来了!简介前不久,ultralytics发布了一个yolov5 7.0版本&…

小程序 超长页面截图保存web-view+html2canvas

web-view文档建议参考----支付宝提供的文档,html2canvas官方文档(官网可以下载html2canvas.js 和 html2canvas.min.js)。由于篇幅受限,这里就贴了一下用法,对于web-view的配置情况,需要自己去查看文档&…

acwing111-畜栏预定

算法分类: 区间分组的应用 贪心 问题描述 有 N 头牛在畜栏中吃草。 每个畜栏在同一时间段只能提供给一头牛吃草,所以可能会需要多个畜栏。 给定 N 头牛和每头牛开始吃草的时间 A 以及结束吃草的时间 B,每头牛在 [A,B]这一时间段内都会一直…

【java篇】反射机制简单理解

学到JDBC后,使用到反射机制,所以回顾反射机制相关知识点; 文章目录 文章目录 什么是反射机制? 如何理解反射呢? 总结 一、Java反射机制是什么? 二、Java反射机制中获取Class的三种方式及区别? 三…

Acwing---795.前缀和

前缀和1.题目2.基本思想3.代码实现4.总结1.题目 输入一个长度为n的整数序列。 接下来再输入m个询问,每个询问输入一对l,r。 对于每个询问,输出原序列中从第l个数到第 r 个数的和。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数&am…

python简单介绍及基础知识(二)

♥️作者:小刘在这里 ♥️每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一 起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,…

Linux学习笔记——Nginx安装部署

5.3、Nginx安装部署 5.3.1、简介 Nginx(engine x)是一个高性能的HTTP和反向代理Web服务器,同时也提供了IMAP/POP3/SMTP服务。 同Tomcat一样,Nginx可以托管用户编写的WEB应用程序成为可访问的网页服务,同时也可以作为…

两数之和【每日一题】

⭐前言⭐ ※※※大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入刷题模式。若有错误,请多多指教。更多有趣的代码请移步Gitee 👍 点赞 ⭐ 收藏 📝留言 都是我创作的最大的动力! 合抱之木…