当前位置: 首页 > news >正文

Vue axios Post请求 403 解决之道

前言:

刚开始请求的时候报 CORS 错误,通过前端项目配置后算是解决了,然后,又开始了新的报错 403 ERR_BAD_REQUEST。但是 GET 请求是正常的。

后端的 Controller 接口代码如下:

@PostMapping(value = "/login2")@ResponseBodypublic LoginReq login2(@RequestBody LoginReq req, HttpServletRequest servletRequest, HttpServletResponse response) {System.out.println("---- login2 ----- userName = " + req.getUserName());
//        // 设置js请求跨域解决response.addHeader("Access-Control-Allow-Origin", "*");response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");response.setHeader("Access-Control-Allow-Methods", "GET, PUT, OPTIONS, POST");String userCode = servletRequest.getHeader("userCode");String accessToken = servletRequest.getParameter("accessToken");System.out.println("---- login2 --------------- accessToken = " + accessToken+" , userCode = " + userCode);String user = JSONObject.toJSONString(req);System.out.println("---- login2 ----- user = " + user);System.out.println("---- login2 -----  birthday = " + req.getBirthday());SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");Date date = null;try {date = simpleDateFormat.parse(simpleDateFormat.format(req.getBirthday()));} catch (ParseException e) {e.printStackTrace();}System.out.println("date = " + simpleDateFormat.format(date));req.setBirthday(new Date());// 获取 cookieCookie[] cookies = servletRequest.getCookies();if (cookies != null && cookies.length > 0) {for (Cookie cookie : cookies) {String name = cookie.getName();String value = cookie.getValue();System.out.println("cookie >> name = " + name + " , value = " + value);}}if (req.getUserName().isEmpty() || req.getPwd().isEmpty()) {throw new RuntimeException("userName or pwd is empty");}return req;}

前端的调用代码如下:

 axios({method: 'POST',url: 'login/demo_war_exploded/login2',data: JSON.stringify({'userName':"朱",'pwd':"pass1234!",'birthday':"2022-12-06"}),headers: {'Content-Type' : 'application/json'}}).then(response => {console.log(response)}).catch(function (error) {console.log(error)})
解决跨域问题的前端配置:
 proxy: {"/login" :{target: "http://localhost:8180/",changeOrigin: true,//ws: true,//websocket支持secure: false,pathRewrite: {"^/login": ""},}}

403 报错如下图:
在这里插入图片描述
网上搜索了一堆都不行,各种五花八门的答案,对我来说都是无效的。
直到后面问了一个前端的同事,他让我在配置跨域的地方加一行配置,结果就 OK 啦,

proxy: { //配置多个跨域"/login" :{target: "http://localhost:8180/",changeOrigin: true,//ws: true,//websocket支持secure: false,pathRewrite: {"^/login": ""},// 后面新增的配置onProxyReq(proxyReq) {proxyReq.removeHeader('origin')}}},

最后,成功的截图如下:
在这里插入图片描述

http://www.lryc.cn/news/268406.html

相关文章:

  • 【Leetcode】重排链表、旋转链表、反转链表||
  • RabbitMQ 报错:Failed to declare queue(s):[QD, QA, QB]
  • Neo4j 5建库
  • 鲁棒最小二乘法 拟合圆
  • LeetCode——动态规划
  • opencv和gdal的读写图片波段顺序问题
  • PyQt 打包成exe文件
  • 【Web2D/3D】SVG(第二篇)
  • leetcode18. 四数之和
  • (十八)Flask之threaing.local()对象
  • ffmpeg 硬件解码零拷贝unity 播放
  • 高德地图_公共交通路径规划API,获取两地点之间的驾车里程和时间
  • PyTorch深度学习实战(28)——对抗攻击(Adversarial Attack)
  • MariaDB单机多实例的配置方法
  • 加强->servlet->tomcat
  • Python初学者必须吃透的69个内置函数!
  • Day73力扣打卡
  • Android原生实现分段选择
  • 在 Unity 中获取 Object 对象的编辑器对象
  • idea自动注释
  • 阿里云 ACK 云上大规模 Kubernetes 集群高可靠性保障实战
  • 如何在无公网IP环境使用Windows远程桌面Ubuntu
  • Python——yolov8识别车牌2.0
  • Cookie的详解使用(创建,获取,销毁)
  • shell脚本自动化部署Zabbix4.2(修改脚本替换版本)
  • java SSM课程平台系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • k8s二进制最终部署(网络 负载均衡和master高可用)
  • 【51单片机系列】DS1302时钟模块
  • 深入理解C语言中冒泡排序(优化)
  • 低代码选型注意事项