vue3delete请求报403forbidden,前后端解决方式

在做开发时,前期已经在Controller类加上@CrossOrigin(origins = "*"),发送get和post请求都没问题,但遇到delete请求时,又报出跨域问题

一.前端添加proxy代理服务器(未能解决)

在vue.config.js中使用devServer配置代理,在文件中添加

javascript 复制代码
devServer:{
    proxy:{
      "/api":{
        target:"http://localhost:9998",
        changeOrigin: true,
        pathRewrite:{"^/api": ""},
      }
    }
  }

然后在你的axios配置文件中将baseURL改成

javascript 复制代码
const API = axios.create({
	baseURL:'/api', 
	timeout: 2000                  
})

这是因为proxy中设置了target,则此时请求地址变为http://localhost:9998/api

但同时在proxy中添加了pathRewrite属性,它是一个正则表达式,匹配/api并替换为""(空字符串),所以实际请求地址依然为http://localhost:9998/接口名称
使用proxy代理服务器的目的是:
解决跨域问题,我们的前端项目和代理服务器有相同的端口,访问代理服务器不存在跨域问题,然后由代理服务器去访问target目标地址。

二.后端重写addCorsMappings跨域方法(成功)

我这里是在src文件夹下,新建了config文件夹,创建了MyConfiguration类实现了WebMvcConfigurer,具体如下:

java 复制代码
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@SuppressWarnings("deprecation")
@Configuration
public class MyConfiguration implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedMethods("GET","POST","DELETE","PUT","OPTIONS") //允许的请求类型
                //允许携带头信息(该处为所有头信息,可根据自己的需求修改)
                .allowedHeaders("*")
                .allowedOrigins("*")
                .maxAge(3600);
    }
}

在后端重写addCorsMappings方法成功解决了delete的跨域问题

相关推荐
wellc21 小时前
SpringBoot集成Flowable
java·spring boot·后端
|晴 天|21 小时前
Vue 3 + LocalStorage 实现博客游戏化系统:成就墙、每日签到、积分商城
前端·vue.js·游戏
Hui Baby1 天前
springAi+MCP三种
java
hsjcjh1 天前
【MySQL】C# 连接MySQL
java
敖正炀1 天前
LinkedBlockingDeque详解
java
wangyadong3171 天前
datagrip 链接mysql 报错
java
untE EADO1 天前
Tomcat的server.xml配置详解
xml·java·tomcat
ictI CABL1 天前
Tomcat 乱码问题彻底解决
java·tomcat
敖正炀1 天前
DelayQueue 详解
java
tongxh4231 天前
Spring Boot 3.X:Unable to connect to Redis错误记录
spring boot·redis·后端