React配置代理解决跨域问题

摘要:
它适用于一个或多个代理constproxy=require('http-proxy mindware')模块。exports=函数(app){app.use(//传入一个或多个代理,{target:{'^/api1':3000/api1/studentimport'./app.css';{axios.get('http:

一、在src目录下建立setupProxy.js, 使用CJS(common JS)语法配置代理,适合一个或多个代理

React配置代理解决跨域问题第1张

const proxy = require('http-proxy-middleware')

module.exports = function(app){
    app.use(//传入一个或多个代理proxy,以逗号隔开
        // 前缀、
        proxy('/api1', {
            target: 'http://localhost:5000',
            changeOrigin: true,
            pathRewrite: {'^/api1': ''} //以api前缀开头,替换为''空串
        })
    )
}

此时,App.js中,请求的路径要加上/api1前缀,从http://localhost:3000/students变成http://localhost:3000/api1/students

import './App.css';

import React, { Component } from 'react'
import axios from 'axios';

export default class App extends Component {

  getStudent = ()=>{
    axios.get('http://localhost:3000/api1/students').then(
      response=>{
        console.log('请求成功', response.data)
      },
      err=>{
        console.log('请求失败:', err)
      }
    )
  }
  
  render() {
    return <button onClick={this.getStudent}>点我获取学生信息</button>
  }
}


server.js如下:

const express = require('express')
const app = express()

app.use((request, response, next)=>{
    console.log('有人请求服务器了');
    next()
})

app.get('/students', (request, response)=>{
    const students = [
        {id:'001', name:'tom', age:18},
        {id:'002', name:'jerry', age:19},
        {id:'003', name:'tony', age:20}
    ]
    response.send(students)
})

app.listen(5000, (err)=>{
    if(!err) console.log('服务器启动成功了,请求学生信息地址为:http:localhost:5000/students')
})

点击按钮,控制台输出信息:

React配置代理解决跨域问题第2张

二、直接在package.json中配置proxy

React配置代理解决跨域问题第3张

直接在最后面加上"proxy": "http://localhost:5000"即可

React配置代理解决跨域问题第4张

免责声明:文章转载自《React配置代理解决跨域问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在wsl的ubuntu上安装vcpkgPython 读取Excel用例——openpyxl模块下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue如何使用vue-area-linkage实现地址三级联动效果

很多时候我们需要使用地址三级联动,即省市区三级联动。网上有很多插件,在此介绍Vue的一款地区联动插件:vue-area-linkage,下面介绍如何使用这个插件实现地址联动效果: 一、安装 // v5之前的版本 npm i --save vue-area-linkage // v5及之后的版本 npm i --save vue-area-linkage...

7.qml-Qt对象

QML除了支持ECMAScript内置对象对象外,还自己给用户提供了许多宿主对象.当然用户也可以自己自定义对象. 内置对象 : 由 ECMAScript所提供的对象;如Object、Array、Math、Date等等。 宿主对象 :即由 ECMAScript 实现的宿主环境提供的对象,比如Qt对象. 自定义对象 :自定义构造函数所创建的对象。 本章我们...

SendMessage发送WM_COMMAND消息控制另一个程序的某一个按钮

procedure TfrmMain.btnSendClick(Sender: TObject); var hCalc, h1: Cardinal; begin WinExec('calc', SW_SHOWNORMAL);//运行计算器 hCalc := FindWindow('SciCalc', nil);...

php 时间轴,数据统计(最近7天的数据)

每天的数据都有插入到stat表,但是stat表并不一定有每天数据,不全。所以在groupby 按天分组以后,需要置0,取出最近7天的数据。代码如下: /** *获取最近一周的数据/从昨天算起的7天 */ function get_weeks($time = '', $format='Y-m-d'){ $time = $time != '' ? $time...

Laravel 缓存操作

Laravel 为不同的缓存系统提供了统一的 API。缓存配置位于 config/cache.php。 Laravel 目前支持主流的缓存后端如 File、Memcached 和 Redis 等,默认是使用文件缓存。 env文件配置 ,推荐修改这里 config/cache.php 文件,不建议直接修改 默认laravel支持缓存介质:"apc", "...

Oracle Sql 胡乱记

/Oracle查询优化改写/ --1、coalesce 返回多个值中,第一个不为空的值 select coalesce('', '', 's') from dual; --2、order by -----dbms_random.value 生产随机数,利用随机数对查询结果进行随机排序 select * from emp order by dbms_rand...