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

springboot跨域踩坑笔记

事情是这样的,我在进行前后端联调的时候,发送了跨域拦截

在这里插入图片描述
马上在spring项目中创建一个CorsConfig

package com.example.demo.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 {@Overridepublic void addCorsMappings(CorsRegistry registry) {System.out.println("1");registry.addMapping("/**").allowedOrigins("http://localhost:8081").allowedHeaders("*").allowCredentials(true).allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH");System.out.println("2");}}

一顿操作猛如虎,结果还是不行……

原来,是我把事情想复杂了!
没仔细看看报错的内容
在这里插入图片描述

这个错误信息是浏览器中的跨域资源共享(CORS)机制的一部分,它指示在进行跨域请求时出现了问题。让我解释一下每个部分的含义:

  1. Response to preflight request:
    这部分指的是在执行实际的跨域请求之前,浏览器会发送一个预检请求(preflightrequest)以确定服务器是否允许跨域请求。这个预检请求是一种 OPTIONS 请求,包含一些头信息,以及请求的方法等信息。

  2. Doesn’t pass access control check: 这表示预检请求没有通过访问控制检查。在 CORS
    中,服务器必须设置适当的响应头来明确指示是否允许来自不同源的请求。

  3. No ‘Access-Control-Allow-Origin’ header is present on the requested
    resource: 这是错误的核心信息。它表示在预检请求的响应中,没有设置名为’Access-Control-Allow-Origin’的响应头。这个响应头用于指定允许访问该资源的源(域名)。如果该响应头不存在或不包含当前源的域名,浏览器将拒绝访问该资源。

简而言之,就是服务端需要接受这个请求,将数据返回给客户端
在过滤器添加以下代码:

servletResponse.setHeader("Access-Control-Allow-Origin", "*");

过滤器源码

package com.example.demo.filter;import com.alibaba.fastjson.JSONObject;
import com.example.demo.entity.Result;
import com.example.demo.utils.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@Slf4j
@WebFilter(urlPatterns = "/*")
public class LoginCheckFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest req=(HttpServletRequest) servletRequest;HttpServletResponse resp=(HttpServletResponse) servletResponse;((HttpServletResponse) servletResponse).setHeader("Access-Control-Allow-Origin", "*");((HttpServletResponse) servletResponse).setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");;((HttpServletResponse) servletResponse).setHeader("Access-Control-Allow-Headers", "AC-User-Agent, token, content-type");String url=req.getRequestURI().toString();log.info("请求url:{}",url);if(url.contains("login")){System.out.println("放行");log.info("放行");filterChain.doFilter(servletRequest,servletResponse);return;}String jwt=req.getHeader("token");if(!StringUtils.hasLength(jwt)){Result error=Result.error("NOT_LOGIN");String nologin= JSONObject.toJSONString(error);resp.getWriter().write(nologin);return;}try {JwtUtils.parseJWT(jwt);}catch (Exception e){e.printStackTrace();log.info("返回未登录信息");Result error=Result.error("NOT_LOGIN");String nologin= JSONObject.toJSONString(error);resp.getWriter().write(nologin);return;}filterChain.doFilter(servletRequest,servletResponse);}
}

最后,项目顺利运行!!!

在这里插入图片描述

相关文章:

springboot跨域踩坑笔记

事情是这样的,我在进行前后端联调的时候,发送了跨域拦截 马上在spring项目中创建一个CorsConfig类 package com.example.demo.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.an…...

基于STM32+FreeRTOS的四轴机械臂

目录 代码: 注释写的较少,但本文出现的代码都有注释,所以请直接在本文里看注释 项目概述: 一 准备阶段(都是些废话) 二 裸机测试功能 1.摇杆控制 接线: CubeMX配置: 代码 2…...

【C语言】三子棋游戏——超细教学

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C语言 🔥该篇将结合之前的知识来实现 三子棋游戏。 目录: 🌟思路框架:测试游戏 &#x1f31f…...

redux的介绍、安装、三大核心与执行流程

redux的介绍、安装、三大核心与执行流程 一、redux的基本介绍二、redux的安装三、redux核心概念3.1 action3.2 reducer3.3 store 四、Redux代码执行流程五、加减案例练习 一、redux的基本介绍 redux中文官网Redux 是 React 中最常用的状态管理工具(状态容器&#x…...

Redis 5环境搭建

一、环境搭建 如果是Centos8,yum 仓库中默认的 Redis版本就是5,直接yum install即可。如果是Centos7,yum 仓库中默认的 Redis版本是3系列,比较老~ 为了我们能在 Centos7中下载到 Redis5 首先要安装额外的软件源 sudo yum insta…...

stm32红绿灯源代码示例(附带Proteus电路图)

本代码不能直接用于红路灯,只是提供一个思路 #include "main.h" #include "gpio.h" void SystemClock_Config(void); void MX_GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStruct {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOB_CLK_ENAB…...

Qt与电脑管家4

折线图&#xff1a; #ifndef LINE_CHART_H #define LINE_CHART_H#include <QWidget> #include <QPainter> #include "circle.h" class line_chart : public QWidget {Q_OBJECT public:explicit line_chart(QWidget *parent nullptr); protected:void pa…...

使用css美化gradio界面

基本方法 在默认的前端页面中使用检查工具确定要修改的部分的选择器名称&#xff0c;然后在block_css中对其修改&#xff0c;并在启动网页时传入参数&#xff1a;with gr.Blocks(cssblock_css, thememy_theme) as demo: 禁止修改下拉框文字 input.border-none.svelte-c0u3f0…...

Flink流批一体计算(13):PyFlink Tabel API之SQL DDL

1. TableEnvironment 创建 TableEnvironment from pyflink.table import Environmentsettings, TableEnvironment# create a streaming TableEnvironmentenv_settings Environmentsettings.in_streaming_mode()table_env TableEnvironment.create(env_settings)# or create…...

java笔试手写算法面试题大全含答案

1.统计一篇英文文章单词个数。 public class WordCounting { public static void main(String[] args) { try(FileReader fr new FileReader("a.txt")) { int counter 0; boolean state false; int currentChar; while((currentChar fr.read()) ! -1) { i…...

点云平面拟合和球面拟合

一、介绍 In this tutorial we learn how to use a RandomSampleConsensus with a plane model to obtain the cloud fitting to this model. 二、代码 #include <iostream> #include <thread> #include <pcl/point_types.h> #include <pcl/common/io.…...

部署问题集合(十九)linux设置Tomcat、Docker,以及使用脚本开机自启(亲测)

前言 因为不想每次启动虚拟机都要手动启动一遍这些东西&#xff0c;所以想要设置成开机自启的状态 设置Tomcat开机自启 创建service文件 vi /etc/systemd/system/tomcat.service添加如下内容&#xff0c;注意修改启动脚本和关闭脚本的地址 [Unit] DescriptionTomcat9068 A…...

视觉SLAM:一直在入门,如何能精通,CV领域的绝境长城,

目录 前言 福利&#xff1a;文末有chat-gpt纯分享&#xff0c;无魔法&#xff0c;无限制 1 什么是SLAM&#xff1f; 2 为什么用SLAM&#xff1f; 3 视觉SLAM怎么实现&#xff1f; 4 前端视觉里程计 5 后端优化 6 回环检测 7 地图构建 8 结语 前言 上周的组会上&…...

【报错】yarn --version Unrecognized option: --version Error...

文章目录 问题分析解决问题 在使用 npm install -g yarn 全局安装 yarn 后,查看yarn 的版本号,报错如下 PS D:\global-data-display> yarn --version Unrecognized option: --version Error: Could...

二叉搜索树的(查找、插入、删除)

一、二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 1、若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值&#xff1b; 2、若它的右子树不为空&#xff0c;则右子树上所有节点的值都…...

电力虚拟仿真 | 高压电气试验VR教学系统

在科技进步的推动下&#xff0c;我们的教育方式也在发生着翻天覆地的变化。其中&#xff0c;虚拟现实&#xff08;VR&#xff09;技术的出现&#xff0c;为我们提供了一种全新的、富有沉浸感的学习和培训方式。特别是在电力行业领域&#xff0c;例如&#xff0c;电力系统的维护…...

innovus如何设置size only

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 给instance设置size only属性命令如下: dbset [dbGet top.inst.name aa/bb -p] .dontTouch sizeOk 给一个module设置size only需要foreach循环一下: foreach inst [dbGet top.…...

Java之继承详解二

3.7 方法重写 3.7.1 概念 方法重写 &#xff1a;子类中出现与父类一模一样的方法时&#xff08;返回值类型&#xff0c;方法名和参数列表都相同&#xff09;&#xff0c;会出现覆盖效果&#xff0c;也称为重写或者复写。声明不变&#xff0c;重新实现。 3.7.2 使用场景与案例…...

国内常见的几款可视化Web组态软件

组态软件是一种用于控制和监控各种设备的软件&#xff0c;也是指在自动控制系统监控层一级的软件平台和开发环境。这类软件实际上也是一种通过灵活的组态方式&#xff0c;为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。通常用于工业控制&#xff0c;自动…...

通过 git上传到 gitee 仓库

介绍 Git是目前世界上最先进的分布式版本控制系统&#xff0c;有这么几个特点&#xff1a; 分布式 &#xff1a;是用来保存工程源代码历史状态的命令行工具。保存点 &#xff1a;保存点可以追溯源码中的文件&#xff0c;并能得到某个时间点上的整个工程项目额状态&#xff1b;…...

基于OpenClaw的AI智能体脚手架Tradeclaw:构建跨境贸易决策支持系统

1. 项目概述&#xff1a;为跨境贸易打造的AI智能体脚手架如果你正在从事跨境电商或外贸采购&#xff0c;每天面对海量的产品信息、繁杂的供应商数据和模糊的市场信号&#xff0c;感觉像在信息海洋里盲目捕捞&#xff0c;那么Tradeclaw这个项目可能就是为你量身定制的“数字捕手…...

从零解构:BUUCTF“吹着贝斯扫二维码”中的隐写与编码链

1. 题目背景与核心挑战 第一次看到BUUCTF这道"吹着贝斯扫二维码"的题目时&#xff0c;我盯着那堆杂乱的文件陷入了沉思。这道题完美展现了CTF比赛中典型的"隐写多层编码"组合拳——就像侦探破案需要同时处理物证和密码本。题目给出的初始材料是一个加密的f…...

AI Agent变现难题与破局之道:小白程序员必备收藏,2026年蓝海掘金指南!

文章深入分析了当前AI Agent行业的冰火两重天现象&#xff0c;揭示了技术不成熟、伪需求泛滥、基础设施不完善等六大核心底层逻辑导致变现困难。同时&#xff0c;文章指出了电商全链路、企业办公自动化、本地生活商家、开发者垂直、垂类定制化等五大变现蓝海赛道&#xff0c;并…...

在Windows上优雅观看B站:BiliBili-UWP第三方客户端完全指南

在Windows上优雅观看B站&#xff1a;BiliBili-UWP第三方客户端完全指南 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端&#xff0c;当然&#xff0c;是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 还在用浏览器看B站视频吗&#xff1f;卡…...

FastDFS整合Nginx踩坑记:升级1.22.0修复CVE-2021-23017,如何平滑保留模块不报错?

FastDFS整合Nginx安全升级实战&#xff1a;从漏洞修复到模块兼容的全流程指南 最近在维护一个使用FastDFS作为分布式存储的生产环境时&#xff0c;遇到了Nginx的CVE-2021-23017安全漏洞问题。这个漏洞可能允许攻击者通过特制的DNS响应导致工作进程崩溃&#xff0c;对于线上业务…...

从泡泡实验室到阿木社区:PX4开发者如何在国内技术圈子里快速成长?

从泡泡实验室到阿木社区&#xff1a;PX4开发者如何在国内技术圈子里快速成长&#xff1f; 在无人机开源飞控领域&#xff0c;PX4和Pixhawk已经成为开发者绕不开的技术栈。但相比国外活跃的开发者社区&#xff0c;国内的技术生态往往让新手感到无从下手——百度贴吧的讨论碎片化…...

用surf( )函数绘制三维曲面图

在“用plot3( )函数绘制三维曲线图”中&#xff0c;实现了三维曲线的绘制&#xff0c;得到了一个类似面包圈形状的旋转曲面&#xff0c;很喜欢这个造型&#xff0c;就想到是不是可以直接绘制出曲面&#xff0c;而不只是用曲线方式绘制出看起来像曲面的图形。一看参考书&#xf…...

终极矢量图标库完全指南:Remix Icon 3200+免费图标深度解析

终极矢量图标库完全指南&#xff1a;Remix Icon 3200免费图标深度解析 【免费下载链接】RemixIcon Open source neutral style icon system 项目地址: https://gitcode.com/gh_mirrors/re/RemixIcon Remix Icon 是一套开源的矢量图标库&#xff0c;包含超过3200个精心设…...

macOS 上 GNS3 快速部署与跨 VLAN 通信实战

1. macOS 下 GNS3 的快速安装指南 第一次接触 GNS3 是在准备 CCNP 认证的时候&#xff0c;当时为了省下买真机的钱&#xff0c;在 MacBook Pro 上折腾了好几天。现在回想起来&#xff0c;如果当时有人能给我一份详细的安装指南&#xff0c;至少能少走一半弯路。GNS3 作为网络工…...

别再被Linux的free命令骗了!手把手教你读懂‘可用内存’和‘实际空闲内存’的区别

别再被Linux的free命令骗了&#xff01;手把手教你读懂‘可用内存’和‘实际空闲内存’的区别 刚接触Linux服务器管理时&#xff0c;看到free -m输出里那个触目惊心的"free"数值&#xff0c;我的第一反应是&#xff1a;"天哪&#xff0c;内存快用完了&#xff0…...