http-proxy-middleware实现跨域;还有直接使用proxy跨域,不通过中间件

一、http-proxy-middleware实现跨域

1、若你想要跨域的网址,能够在当前电脑通过链接访问,那么可以直接在本地新建如下这个文件夹。若你想要跨域的网址,不能够在当前电脑通过链接访问,那么需要在那个新建链接接口的电脑端新建如下这个文件夹

2、新建文件夹,文件夹名字可以任意命名,然后在文件夹内新建一个js文件,文件名字可以任意

文件例如新建为setupProxy.js

const express = require("express");
const { createProxyMiddleware } = require("http-proxy-middleware");

const app = express();
//设置跨域访问
app.all("*", function (req, res, next) {
  //设置允许跨域的域名,*代表允许任意域名跨域
  res.header("Access-Control-Allow-Origin", "*");
  //允许的header类型
  res.header("Access-Control-Allow-Headers", "content-type");
  //跨域允许的请求方式
  res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
  if (req.method.toLowerCase() == "options") res.send(200);
  //让options尝试请求快速结束
  else next();
});
app.use(
  "/api",
  createProxyMiddleware({
    target: "http://192.168.10.30:8080",
    changeOrigin: true,
    pathRewrite: {
      "^/api": "", // rewrite path
    },
  })
);
//这个链接是目标链接是我随便从网上找的一个
app.listen(3000); //这个端口号就是proxy运行的端口号

3、然后在文件夹目录下执行如下代码,安装包

npm install express
npm install http-proxy-middleware

4、在文件目录下执行

npm init -y 
node setupProxy.js

通过node将后台跑起来

5、然后在前端网页内获取

在我的前端项目文件夹内,有一个页面需要执行跨域请求(注意:这个前端代码文件夹和上面的包含setupProxy.js的文件夹不是同一个)

import './App.css';
import React , { Component } from 'react'
class App extends Component{
  componentDidMount(){
    //get请求
    fetch("http://localhost:3000/api/index/queryPictureList")//这里是node运行的IP地址
      .then(res => res.json())
      .then(res => {
        console.log(res)
      })
  }
  //post请求需要加上一些参数
  // fetch('http://192.168.8.112:3000/api',{method:'post',body:...})
  //       .then(res => res.json())
  //       .then(res => {
  //         console.log(res)
  //       })
  //   }
  render() {
    return (
      <div className="App">
        123
      </div>
    );
  }
}

export default App;

二、直接使用proxy跨域,不通过中间件

在package.json下配置,具体如下

"proxy": "http://api.xxxx.com"

这个地址是npm start启动时候,显示在页面的地址,也就是我们打开该项目的地址

https://blog.csdn.net/jason_renyu/article/details/104640965

https://www.cnblogs.com/crazycode2/p/9757236.html

 

  • umi创建的项目,直接自带proxy.js文件,可以跟上需要跨域的地址就行
export default {
  dev: {
    '/permission/': {
      target: 'http://localdev:9050/',
      changeOrigin: true,
      pathRewrite: {
        '^': '',
      },
    },
    '/media/': {
      target: 'http://localdev:9050/',
      changeOrigin: true,
      pathRewrite: {
        '^': '',
      },
    },
  },
 test: {
    '/api/': {
      target: 'https://preview.pro.ant.design',
      changeOrigin: true,
      pathRewrite: {
        '^': '',
      },
    },
  },
};

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值