SpringBoot解决前后端分离跨域问题:状态码403拒绝访问

news2024/11/29 18:35:45

在这里插入图片描述

在这里插入图片描述

最近在写和同学一起做一个前后端分离的项目,今日开始对接口准备进行 登录注册 的时候发现前端在发起请求后,抓包发现后端返回了一个403的错误,解决了很久发现是【跨域问题】,第一次遇到,便作此记录✍

异常描述

  • 在后端服务器启动后,前端页面也起了起来,然后点击这个【登录】按钮准备向后端发起POST请求时却没有任何的反应,便觉得很疑惑
    在这里插入图片描述
  • 于是来到后端的控制台观察是否有什么异常,但是也发现并没有任何的异常Exception显示出来,就觉得很奇怪(・∀・(・∀・(・∀・*)

在这里插入图片描述

抓包排查

那么这个时候:提升自己的机会就又来了,我便准备去查看网页控制台并抓包进行观察

  • 再次打开这个网页发送请求的时候便发现,出现了两个 url,仔细观察发现端口号是不一样的,一个是我服务器启动的端口,为8080,另一个呢问了前端的同学说是它占用的这个端口号,为5173
  • 那么两个端口号都不一致前端发起请求后端无法接受到确实是可以解释得通的

在这里插入图片描述

  • 接着仔细查看这里的英文便可以看到前面的这个localhost:5173已经被 CORS策略 给拒绝了,说:不存在“Access Control Allow Origin”这样的标头,那读到这里我又可以进一步断定应该是【访问被拒绝】了,但是还无法做出完全的肯定

在这里插入图片描述

  • 此时我又去进行抓包确认,连着点了三次登录按钮,并通过【Fiddler】进行抓包便可以观察到很醒目的三个403,那么清楚HTTP协议的状态码的同学便可以清楚

【403状态码】:表示访问被拒绝,有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问)

在这里插入图片描述

例如::查看码云的私有仓库, 如果不登陆, 就会出现403

在这里插入图片描述

Spring Boot解决跨域问题

那么此时,我们便可以在后端通过SpringBoot去写一个配置文件,以指定哪个端口是可以进行跨域访问的

  • 以下是相关的代码,只需要在config包(一般放配置文件)下添加一个这样的类即可,因为它是有关一些配置,所以要加上@Configuration注解
package com.example.demo.config;

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;

@Configuration
public class MyCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.addAllowedOrigin(http"://localhost:5173");    // 允许谁跨域
        configuration.setAllowCredentials(true);                    // 传cookie
        configuration.addAllowedMethod("*");                        // 允许哪些方法跨域 post/get
        configuration.addAllowedHeader("*");                        // 允许哪些头信息

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration); // 拦截一切请求

        return new CorsFilter(source);
    }
}
  • 最主要的还是配置下面的这一句,将端口号为5173的口子放开,这样任何的HTTP请求就可以进来了
configuration.addAllowedOrigin("http://localhost:5173");    // 允许谁跨域
  • 此时我们再去看到就可以发现前后端可以进行交互了,只是因着其他的原因让以至于后端返回了一些错误的信息给到前端

在这里插入图片描述
在这里插入图片描述

那么以上就是我对于这里前后端分离项目所遇到的跨域问题的解决方案,希望对你有帮助🌹🌹🌹

在这里插入图片描述

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

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

相关文章

【AIGC风格prompt】风格类绘画风格的提示词技巧

风格类绘画风格的提示词展示 主题:首先需要确定绘画的主题,例如动物、自然景观、人物等。 描述:根据主题提供详细的描述,包括颜色、情感、场景等。 绘画细节:描述绘画中的细节,例如表情、纹理、光影等。 场…

设计模式(4)--对象行为(11)--访问者

1. 意图 表示一个作用于某对象结构中的各元素的操作。 使你可以在不改变各元素的类的前提下定义于作用于这些元素的新操作。 2. 五种角色 抽象访问者(Visitor)、具体访问者(Concrete Visitor)、抽象元素(Element)、 具体元素(Concrete Element)、对象结构(ObjectStructure) 3…

回顾2023在CSDN的足迹与2024展望

目录 一、关于博主 二、2023的历程 1、博客分类 2、年度创作数据 3、解锁勋章 4、主要的方向 二、技术感悟 1、技术深入 2、还是实践 三、展望2024 今天是2024年的第一天,告别2023年,让我们以全新的姿态,去迎接新的一年的挑战。2023年…

影视后期:Pr 调色处理之风格调色

写在前面 整理一些影视后期相关学习笔记博文为 Pr 调色处理中风格调色,涉及下面几个Demo 好莱坞电影电影感调色复古港风调色赛博朋克风格调色日系小清晰调色 理解不足小伙伴帮忙指正 简单地说就是害怕向前迈进或者是不想真正地努力。不愿意为了改变自我而牺牲目前所…

Xgboost分类模型的完整示例

往期精彩推荐 数据科学知识库机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归PySpark大数据处理详细教程 定义问题 UCI的蘑菇数据集的主要目的是为了分类任务,特别是区分蘑菇是可食用还是有毒。这个数据集包含了蘑菇的各种特征,如…

WorkQueue模型

WorkQueues,也被称为任务队列模型。当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,无法及时的处理。此时就可以使用work模型:让多个消费者绑定到一个队列&…

IDEA错误: 找不到或无法加载主类 com.atguigu.springcloud.EurekaServer7001_App

第一种方法&#xff1a; 可以手动点击maven中的compile编译一下&#xff0c;如下图&#xff1a; 第二种方法&#xff1a; 在pom.xml文件中加入编译插件&#xff1a; <build><plugins><!-- 编译插件 --><plugin><artifactId>maven-compiler-plu…

matlab概率论例子

高斯概率模型&#xff1a; [f,xi] ksdensity(x): returns a probability density estimate, f, for the sample in the vector x. The estimate is based on a normal kernel function, and is evaluated at 100 equally spaced points, xi, that cover the range of the da…

如何在Linux系统中安装Redis

原本Redis官网提供了Windows和Linux两个版本&#xff0c;但从 2011-12-29 以后不再更新Windows版本&#xff08;https://github.com/dmajkic/redis/downloads&#xff09;&#xff0c;加之企业生产环境通常使用Linux系统&#xff0c;所以这里在Linux系统中演示如何安装Redis。 …

typescript,eslint,prettier的引入

typescript 首先用npm安装typescript&#xff0c;cnpm i typescript 然后再tsc --init生成tsconfig.json配置文件&#xff0c;这个文件在package.json同级目录下 最后在tsconfig.json添加includes配置项&#xff0c;在该配置项中的目录下&#xff0c;所有的d.ts中的类型可以在…

11 HAL库的硬件I2C驱动SI7006和AP3216C

引言&#xff1a; 本片文章想给大家分享一下使用HAL库驱动SI7006和AP3216C&#xff0c; 这两款常见的芯片的手册会在文章的末尾提供给大家。 一、SI7006和AP3216C简介 SI7006 SI7006是一款数字湿度和温度传感器&#xff0c;由Silicon Labs&#xff08;全称Silicon Laboratories…

【AI视频领域展望】未来视频行业:人工智能、5G和VR技术将如何改变视频制作和观看方式?

5G技术 5G技术的商用将会进一步推动物联网和视频行业的融合。通过5G技术&#xff0c;可以实现高清视频的实时传输和播放&#xff0c;为用户提供更加流畅和快速的观看体验。 5G视频的优势主要体现在以下几个方面&#xff1a; 更低的延迟&#xff1a;5G网络的延迟时间相比4G降低…

Plantuml之EBNF语法介绍(二十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

App.vue中引入自定义组件

components目录中定义组件&#xff1a;Person.vue 目录截图&#xff1a; Person.vue文件中内容&#xff1a; <template><div class"person"><h2>姓名&#xff1a;{{name}}</h2><h2>年龄&#xff1a;{{age}}</h2><!--定义了…

OSCHINA Gitee 联合呈现,《2023 中国开源开发者报告》正式发布,总结分非常帮,可以免费看的报告!

《2023 中国开源开发者报告》 详细地址&#xff1a; https://talk.gitee.com/report/china-open-source-2023-annual-report.pdf 不需要收费下载&#xff01;&#xff01; 其中大模型的部分总结的非常棒 gietee 也支持 AI 模型托管了 如何在 Gitee 上托管 AI 模型 https://…

使用WAZUH检测LD_PRELAOD劫持、SQL注入、主动响应防御

目录 1、检查后门 使用工具检测后门 1.chkrootkit 2.rkhunter 手动检查文件 检查ld.so.preload文件 2、检测LD_PRELOAD ubuntu配置 wazuh配置 3、检测SQL注入 ubuntu配置 攻击模拟 4、主动响应 wauzh的安装以及设置代理可以参考本篇&#xff1a;WAZUH的安装、设置…

【Qt之Quick模块】6. QML语法详解_3 QML对象特性

概述 每一个QML对象类型都包含一组已定义的特性。当进行实例时都会包含一组特性&#xff0c;这些特性是在对象类型中定义的。 一个QML文档中的对象类型声明了一个新的类型&#xff0c;即实例出一个类型。 其中包含以下特性。 the id attribute &#xff1a; id特性property a…

《教育观察》是什么级别的期刊?是正规期刊吗?能评职称吗?

教育类&#xff5c;《教育观察》知网收录 《教育观察》始终秉持“ 立足教育实践&#xff0c;展望教育未来”&#xff0c;致力于在教育实践中以“观察”为方法&#xff0c;以“观察者”为主体&#xff0c;以“新观察”为旨趣&#xff0c;打造从教育实践中洞察教育未来的教育研究…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 2

深入浅出图解C#堆与栈 C# Heaping VS Stacking 第四节 参数传递对堆栈的影响 2 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](htt…

c语言:打印平行四边形|练习题

一、题目 输入平行四边形的边数&#xff0c;用星号打印平行四边形 如图&#xff1a; 二、思路分析 图形分为两部分 1、左边的空格 2、右边的星号 因此&#xff0c;把空格和星号合起来&#xff0c;就是要求的图形 三、代码图片【带注释】 四、源代码【带注释】 #include <s…