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

 更新时间:2024年01月10日 11:50:00   作者:烽起黎明  
这篇文章主要给大家介绍了关于SpringBoot前后端分离跨域问题:状态码403拒绝访问的解决办法,403是被服务器拒绝了,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

最近在写和同学一起做一个前后端分离的项目,今日开始对接口准备进行 登录注册 的时候发现前端在发起请求后,抓包发现后端返回了一个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");    // 允许谁跨域

此时我们再去看到就可以发现前后端可以进行交互了,只是因着其他的原因让以至于后端返回了一些错误的信息给到前端

总结

到此这篇关于SpringBoot前后端分离跨域问题:状态码403拒绝访问解决办法的文章就介绍到这了,更多相关SpringBoot状态码403拒绝访问内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java设计模式之简单工厂模式简述

    java设计模式之简单工厂模式简述

    这篇文章主要为大家详细介绍了java设计模式之简单工厂模式,简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Java中使用json与前台Ajax数据交互的方法

    Java中使用json与前台Ajax数据交互的方法

    这篇文章主要为大家详细介绍了Java中使用json与前台Ajax数据交互的方法,分享Ajax获取显示Json数据的一种方法,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Java使用Spire.PDF实现高效压缩PDF文件

    Java使用Spire.PDF实现高效压缩PDF文件

    这篇文章主要介绍了过大的文件体积常引发传输卡顿、加载缓慢等问题,本文将解析 Spire.PDF for Java 的 PDF 压缩方案,有需要的可以了解下
    2025-08-08
  • Java  队列 Queue 用法实例详解

    Java 队列 Queue 用法实例详解

    本文实例讲述了Java内置队列类Queue用法,分享给大家供大家参考
    2017-04-04
  • SpringMVC的工程搭建步骤实现

    SpringMVC的工程搭建步骤实现

    这篇文章主要介绍了SpringMVC的工程搭建步骤实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Jenkins系统如何进行数据备份

    Jenkins系统如何进行数据备份

    随着我们的长期使用,Jenkins系统中的内容会越来越多,特别是一些配置相关的东西,不能有任何丢失。这个时候我们就需要定期备份我们的Jenkins系统,避免一些误操作不小心删除了某些重要文件,本文就将介绍下Jenkins系统如何进行数据备份
    2021-06-06
  • Java中的RoundingMode舍入模式详解

    Java中的RoundingMode舍入模式详解

    Java中的RoundingMode枚举类用于控制高精度数值处理时的舍入行为,提供多种舍入模式,本文给大家介绍Java的RoundingMode舍入模式,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • Integer IntegerCache源码阅读

    Integer IntegerCache源码阅读

    这篇文章主要介绍了Integer IntegerCache源码阅读,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 详解MyBatis特性之动态SQL

    详解MyBatis特性之动态SQL

    动态 SQL 是 MyBatis 的强大特性之一,这篇文章我们将结合动态SQL完成更加复杂的 SQL 操作,文章通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • SpringBoot项目实现统一异常处理的最佳方案

    SpringBoot项目实现统一异常处理的最佳方案

    在前后端分离的项目开发过程中,我们通常会对数据返回格式进行统一的处理,这样可以方便前端人员取数据,后端发生异常时同样会使用此格式将异常信息返回给前端,本文介绍了如何在SpringBoot项目中实现统一异常处理,如有错误,还望批评指正
    2024-02-02

最新评论