create-react-app脚手架配置代理跨域请求接口

Posted 骑着代马去流浪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了create-react-app脚手架配置代理跨域请求接口相关的知识,希望对你有一定的参考价值。

React配置代理跨域访问

React版本:17.0.2

例如后端接口地址为:http://localhost:4000/manager/register

那么前端react配置如下:

1,配置setupProxy.js

在src目录下新建setupProxy.js文件,注意不能用其他文件名字,如果需要配置多个服务器接口地址,多写几个createProxyMiddleware即可

const  createProxyMiddleware  = require("http-proxy-middleware")
module.exports = function (app) 
  app.use(
    /** 
     * 如果设置为"^/api": "",则发送应为http://localhost:5000/api/manager/register,服务收到为http://localhost:4000/manager/register
    */
    createProxyMiddleware("/api",
      target: 'http://localhost:4000', //服务器接口地址
      changeOrigin: true,
      pathRewrite:  "^/api": "" ,
    ),
    
  )

2,配置axios.js的baseURL

import axios from "axios";

const http = axios.create(
    baseURL: 'http://localhost:5000/api'
    timeout: 5000,
    withCredentials: true,
)

// 添加请求拦截器
http.interceptors.request.use(function (config) 
    // 在发送请求之前做些什么
    return config;
, function (error) 
    // 对请求错误做些什么
    return Promise.reject(error);
);

// 添加响应拦截器
http.interceptors.response.use(function (response) 
    if(response.data.code !== 0)
        alert(response.data.msg);
    else
        return response.data
    
, function (error) 
    return Promise.reject(error);
);

export default http

3,在组件中使用

const res = await http(
    url:`/manager/register`,
    method:"post",
    data
);

4,浏览器中显示的请求地址为http://localhost:5000/api/manager/register,实际请求地址为http://localhost:4000/manager/register

 注意:setupProxy.js中的/api中的api可以写成任意字符,但是要跟baseURL中的保持一致,且不能写成空字符。

以上是关于create-react-app脚手架配置代理跨域请求接口的主要内容,如果未能解决你的问题,请参考以下文章

create-react-app脚手架配置代理跨域请求接口

React 脚手架 create-react-app 新版使用说明 重点是配置代理

react脚手架配置代理解决跨域问题

vue-cli脚手架的跨域代理配置

Vue中的Ajax

vue-cli配置跨域代理