axios + springboot 跨域问题cookie

最近在用Vue + springboot 做一个前后端分离的项目,但是在开发的过程中后端涉及shiro框架的用户权限控制,需要通过请求头中的set-cookie进行用户的认证,然而axios中默认axios.defaults.withCredentials=false;是禁止ajax携带cookie的 所以需要改为true

但是之前在cors类中设置的AllowOrigin当允许携带cookie时不能指定为* 所以做了以下的改动 同时要设置 setAllowCredentials为true

配置如下:
在这里插入图片描述

### 解决Vue和Spring Boot项目之间访问问题 为了有效解决Vue前端应用与Spring Boot后端服务之间的请求问题,可以采用多种方法来配置支持。 #### 方法一:通过`@CrossOrigin`注解实现简单设置 在控制器层面上使用`@CrossOrigin`注解是一种简便的方法。此注解可以直接应用于整个控制器类或特定的HTTP处理函数上,从而允许来自指定源的请求[^1]。 ```java @RestController @RequestMapping("/api") @CrossOrigin(origins = "http://localhost:8080", maxAge = 3600) public class MyController { // 控制器逻辑... } ``` 这种方法适用于小型应用程序,在开发阶段非常有用;但对于生产环境下的复杂需求,则可能不够灵活。 #### 方法二:全局配置CORS过滤器 对于更复杂的场景,推荐创建一个专门用于管理资源共享(CORS)策略的配置文件。这可以通过继承`WebMvcConfigurer`接口并重写其`addCorsMappings()`方法来完成: ```java @Configuration public class CrossConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") // 允许所有来源 .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS") // 支持的方法列表 .maxAge(3600) // 预检请求的有效期为一个小时 .allowedHeaders("*"); // 所有头部都可接受 } } ``` 这种方式提供了更高的灵活性,并且能够更好地适应不同类型的客户端连接[^2]。 #### 前端Axios默认配置调整 除了服务器端的变化外,还可以考虑修改前端项目的axios实例,默认情况下自动附带凭证信息(如Cookies),这对于某些安全敏感的应用可能是必要的。如果不需要携带认证信息的话,可以在初始化时关闭它: ```javascript import axios from 'axios'; const instance = axios.create({ baseURL: process.env.VUE_APP_API_URL, withCredentials: false, // 不随同请求一起发送cookie }); export default instance; ``` 这样做有助于减少不必要的麻烦,特别是在测试环境中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值