当前位置: 首页 > news >正文

nodejs搭建代理服务器解决跨域问题

1.安装express、http-proxy-middleware

npm install express http-proxy-middleware

2.根据情况额外再安装一个nodemon,可以在检测到文件变化时自动重启应用程序,省去了手动重启的麻烦

npm install nodemon

搭建代理服务器 node index.js

const express = require('express')
const app = express()
const proxy = require('http-proxy-middleware');
const port = 3000
// 放在相对路径下
app.use(express.static('../test'));// 不改变路径
app.use('/', proxy.createProxyMiddleware({target: 'http://localhost:5000',changeOrigin: true,
}));// 添加代理
// changeOrigin
// pathRewrite重写路径
app.use('/', proxy.createProxyMiddleware({target: 'http://localhost:5000',changeOrigin: true,pathRewrite: {"^/api": ""}
}));app.listen(port,()=>{console.log(`启动${port} start with http://localhost:${port}/`)
})

服务器目录同级创建test文件夹创建index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>this is a new request</title>
</head>
<body>这里有个请求<div id="name"></div><script>var xhr = new XMLHttpRequest();// 配置请求类型、URL 以及是否异步处理xhr.open('GET', '/next/a', true);// 设置请求完成的回调函数xhr.onreadystatechange = function () {// 请求完成并且响应状态码为 200if (xhr.readyState === XMLHttpRequest.DONE) {if (xhr.status === 200) {// 处理请求成功的响应数据console.log(xhr.responseText);} else {// 处理请求失败console.log('AJAX Request failed');}}};// 发送请求xhr.send();</script>
</body>
</html>

搭建接口服务器

var express = require('express');
var app = express();app.get("/", (req, res) => {res.send("123");
});app.get("/next/a", (req, res) => {res.send("a");
});app.get("/api/b", (req, res) => {res.send("bbbbb");
});app.listen(5000);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 嵌入式人工智能ESP32(6-多线程)
  • Python | Leetcode Python题解之第367题有效的完全平方数
  • 为什么互联网上要设立防火墙?WAF又是什么?
  • Unity实现棋盘方格
  • 如何快速建30个文件夹
  • 【给女朋友讲C++】C++的编译
  • [数据集][目标检测]停车场空位检测数据集VOC+YOLO格式7959张2类别
  • 【mysql】mysql的卸载和安装
  • 【区块链 + 智慧文旅】城商行旅游金融联盟:旅游金融联盟平台 | FISCO BCOS应用案例
  • 知识图谱问答召回机制-llm-graph-builder
  • BCLinux Euler 21.10 安装mysql 8.0.37 (二进制安装)
  • 数组、向量与矩阵
  • 常见的数据库面试题分享
  • 解决 mfc140.dll 文件丢失的问题,5种mfc140.dll解决方法
  • C++初学者指南-5.标准库(第二部分)–特殊容器
  • [Vue CLI 3] 配置解析之 css.extract
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 4. 路由到控制器 - Laravel从零开始教程
  • Angular 响应式表单 基础例子
  • IOS评论框不贴底(ios12新bug)
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Spring Cloud Feign的两种使用姿势
  • vue.js框架原理浅析
  • windows-nginx-https-本地配置
  • 动态魔术使用DBMS_SQL
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 对象引论
  • 给第三方使用接口的 URL 签名实现
  • 利用jquery编写加法运算验证码
  • 线性表及其算法(java实现)
  • 携程小程序初体验
  • 一些关于Rust在2019年的思考
  • 硬币翻转问题,区间操作
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 容器镜像
  • #define
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (十三)MipMap
  • (转)母版页和相对路径
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .NET建议使用的大小写命名原则
  • .NET中两种OCR方式对比
  • .pyc文件是什么?
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @WebService和@WebMethod注解的用法
  • [ C++ ] STL---仿函数与priority_queue
  • [100天算法】-实现 strStr()(day 52)
  • [120_移动开发Android]008_android开发之Pull操作xml文件