最近在写和同学一起做一个前后端分离的项目,今日开始对接口准备进行 登录注册 的时候发现前端在发起请求后,抓包发现后端返回了一个
403
的错误,解决了很久发现是【跨域问题】,第一次遇到,便作此记录✍
POST
请求时却没有任何的反应,便觉得很疑惑Exception
显示出来,就觉得很奇怪(・∀・(・∀・(・∀・*)那么这个时候:提升自己的机会就又来了,我便准备去查看网页控制台并抓包进行观察
8080
,另一个呢问了前端的同学说是它占用的这个端口号,为5173
localhost:5173
已经被 CORS策略 给拒绝了,说:不存在“Access Control Allow Origin”这样的标头,那读到这里我又可以进一步断定应该是【访问被拒绝】了,但是还无法做出完全的肯定403
,那么清楚HTTP协议的状态码的同学便可以清楚【403状态码】:表示访问被拒绝,有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问)
例如::查看码云的私有仓库, 如果不登陆, 就会出现
403
那么此时,我们便可以在后端通过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"); // 允许谁跨域
那么以上就是我对于这里前后端分离项目所遇到的跨域问题的解决方案,希望对你有帮助