React跨域请求,http-proxy-middleware代理服务,Axios实现前端请求
创始人
2024-03-21 03:43:38
0

React + Axios跨域请求

React跨域

  • React + Axios跨域请求
  • 一、跨域概念
  • 二、前后端中跨域现象
  • 三、跨域解决方案(2种)
    • 0、产生原因
    • 1、前端解决(React框架)
      • 解决原理:
      • 配置过程
    • 2、后端解决(Spring-boot配置)
  • 结束

一、跨域概念

违背同源策略请求称为跨域请求
同源策略:IP、协议、端口相同的请求

二、前后端中跨域现象

此处展示前端请求后端非同一端口情况下

  • 1.网络栏出现CORS错误
    在这里插入图片描述
  • 2.可以发现跨域请求后端返回状态码是200,源地址为前端3000端口,主机地址为后端地址8080端口
    在这里插入图片描述
  • 3.控制台页面报错找不到后端返回的Access-Control-Allow-Origin选项信息
    在这里插入图片描述

三、跨域解决方案(2种)

0、产生原因

  • 由于浏览器不允许非同源地址访问,导致服务器响应数据到浏览器时会被拦截,故访问后端返回状态码正确但前端渲染接收数据异常。
前端:3000后端:8080HTTP请求浏览器拦截前端:3000后端:8080

1、前端解决(React框架)

前端搭建代理服务器实现

前端:3000代理服务器:3000/api后端:8080HTTP请求HTTP请求响应返回响应结果并交由前端渲染前端:3000代理服务器:3000/api后端:8080

解决原理:

  • 利用服务器访问后端时作为客户端进行访问不受限制
  • 前端访问与自己同源的服务器时也不受限制

配置过程

http-proxy-middleware文档
Axios文档

前期工具

npm i http-proxy-middleware
npm i axios

(1)、在React项目的src文件夹下创建文件setupProxy.js并填写如下内容(src/setupProxy.js)

const {createProxyMiddleware} = require("http-proxy-middleware");
module.exports = function (app){app.use("/api", // 由于请求前后端此时都为3000端口,由于区分请求后端的前缀createProxyMiddleware({target:"http://127.0.0.1:8080",// 后端服务器地址changeOrigin: true,pathRewrite: {"^/api": ""} // 重写地址,将附加的api前缀去除给到后端地址// 若后端请求地址为 http://127.0.0.1:8080/myprocess/// 此时请求代理服务器地址应为 http://127.0.0.1:8080/api/myprocess/// 此处选项就是去除api/这个前缀的}))
};

(2)、前端axios请求后端服务器代码(可理解为将后端的8080服务代理到前端的3000/api接口上,故代理后要请求3000/api,不是8080/api等其他端口)

	// 前端服务器地址http://127.0.0.1:3000// 后端服务器地址http://127.0.0.1:8080// 请求后端http://127.0.0.1:8080/myprocessaxios.get('http://127.0.0.1:3000/api/myprocess')

2、后端解决(Spring-boot配置)

增加 @CrossOrigin 注解实现

@CrossOrigin // 在Controller前加入注解使得返回相应加上"Access-Control-Allow-Origin": "*"允许跨域访问
@RestController
public class processController {@AutowiredMyProcessServiceImpl processService;@GetMapping("/myprocess")private List getData(){//具体实现return ;}
}

结束

文中若有多点不足还请各位评论指出(方便及时更正避免误导更多人),使此文发挥实际作用,如在配置过程中根据此方法配置后仍无法解决可以私信或评论留言,我会第一时间查看并回复!!!

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...