doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:7992回复:2

react 设置代理(proxy) 实现跨域请求

楼主#
更多 发布于:2020-08-03 09:59
一,对于使用creat-react-app构建的项目,可以直接在package.json下配置,具体如下

"proxy": "http://api.xxxx.com"
或者如果创建多个域,该如何设置proxy,能满足可以调用不同域下的API的需求?代码如下

//package.json中加入
"proxy": {
  "/api/RoomApi": {
    "target": "http://open.douyucdn.cn",
    "changeOrigin":true
  },
  "/api/v1":{
    "target":"http://capi.douyucdn.cn",
    "changeOrigin":true
  }
}

使用注意事项:
create-react-app脚手架低于2.0版本时候,可以使用对象类型

"proxy":{
   "/api/**":{
      "target":"http://m.kugo.com",
      "changeOrigin": true
    }
}

最新的create-react-app脚手架2.0版本以上只能配置string类型

"proxy": "http://m.kugo.com",

最好的方式可以通过middleware中间件进行配置(可以配置多个代理)

先安装下,install http-proxy-middleware

const proxy = require("http-proxy-middleware");
module.exports = function(app) {
  app.use(
    proxy("/api/**", {
      target: "http://m.kugo.com/json=true",//跨域地址
      changeOrigin: true
    })
  );
};

二,对于antd-pro的项目,需要在package.json的同等目录下添加.roadhogrc文件,具体代码:

{
  "entry": "src/index.js",
  "extraBabelPlugins": [
    "transform-runtime",
    "transform-decorators-legacy",
    "transform-class-properties",
    ["import", { "libraryName": "antd", "libraryDirectory": "es", "style": true }]
  ],
  "env": {
    "development": {
      "extraBabelPlugins": [
        "dva-hmr"
      ]
    }
  },
  "externals": {
    "g2": "G2",
    "g-cloud": "Cloud",
    "g2-plugin-slider": "G2.Plugin.slider"
  },
  "ignoreMomentLocale": true,
  "theme": "./src/theme.js",
  "proxy": {
    "/api": {
      "target": "http://api.xxxx.com/",
      "changeOrigin": true
    }
  }
}

参考:
https://blog.csdn.net/weixin_33768481/article/details/93702514https://www.cnblogs.com/theblogs/p/10394496.html
知识需要管理,知识需要分享
doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
沙发#
发布于:2021-04-20 16:04
create-react-app脚手架2.0版本,使用http-proxy-middleware中间件,配置多个代理的方法

1. src目录下创建一个 setupProxy.js文件
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function (app) {
    app.use(
        '/api',
        createProxyMiddleware({
            target: 'https://eyesight.news.qq.com/',
            changeOrigin: true,
            pathRewrite: {
                '^/api': '',
            }
        })
    );
    app.use(
        '/apc',
        createProxyMiddleware({
            target: 'https://api.inews.qq.com/',
            changeOrigin: true,
            pathRewrite: {
                '^/apc': '',
            }
        })
    );
};

注意:一定要写pathRewrite,不写没有效果

参考:
https://rourou.blog.csdn.net/article/details/107258487
知识需要管理,知识需要分享
lililala6868
禁止发言
禁止发言
  • 最后登录2021-03-17
  • 发帖数3
板凳#
发布于:2021-03-17 16:25
用户被禁言,该主题自动屏蔽!
游客


返回顶部

公众号

公众号