搭建nodejs代理服务器解决跨域问题
初始化项目
npm init -y
创建目录 view 和文件 app.js,view目录下存放项目文件,app.js
用来启动本地服务和配置本地代理
安装依赖
安装相关依赖,只需要两个依赖包,express
是Web开发框架,http-proxy-middleware
就是代理库
npm install express http-proxy-middleware connect-history-api-fallback connect-timeout path yarn -S
配置代理
编写app.js
,示例如下:
// 导入express,路径包,子进程中的异步进程,代理,设置项目根目录
const express = require('express')
const path = require('path')
const {exec} = require("child_process")
const proxyMiddleWare = require("http-proxy-middleware")
const root = path.join(__dirname, './view')
// 生成express实例,配置代理,启动服务
const app = express();
// 配置代理设置项HOST为目标服务器(即API服务器),PORT为启动服务端口
const { HOST = 'http://192.168.16.28:8080/', PORT = '8899' } = {}
const proxyOption ={target:HOST, changeOrigoin:true}
app.set('port', PORT);
// 设置根目录为静态资源
app.use('/', express.static(root))
// 使用反向代理
app.use("/api", proxyMiddleWare(proxyOption))
// 启动服务
app.listen(app.get('port'), () => {
let url = `http://localhost:${app.get('port')}`
// 自动打开默认浏览器
switch (process.platform) {
case "darwin":
exec(`open ${url}`);
case "win32":
exec(`start ${url}`);
default:
exec(`open ${url}`);
}
})
var express = require("express");
var path = require("path");
const timeout = require("connect-timeout");
const proxy = require("http-proxy-middleware");
var app = express();
// 这里从环境变量读取配置,方便命令行启动
// HOST 指目标地址(即API服务器)
// PORT 服务端口
const { HOST = "http://127.0.0.1:8080", PORT = "2020" } = process.env;
// 反向代理(这里把需要进行反代的路径配置到这里即可)
// eg:将/api/test 代理到 ${HOST}/api/test
// proxy 中间件的选择项
var apiProxy = proxy("/api", {
target: HOST,
pathRewrite: { "^/api": "" },
secure: false,
changeOrigin: true
});
app.use(apiProxy);
// 超时时间
const TIME_OUT = 30 * 1e3;
// 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
if (!req.timedout) next();
});
app.use(require("connect-history-api-fallback")());
// appblog为项目目录
app.use(express.static(path.resolve(__dirname, "appblog")));
app.get("*", function(req, res) {
if (req.originalUrl.indexOf("favicon.ico")) {
res.sendFile(path.resolve(__dirname, "dist", "favicon.ico"));
}
});
// 设置端口
app.set("port", PORT);
app.listen(app.get("port"), function() {
console.log(`server running @${app.get("port")}`);
});
启动代理
在根文件夹内打开控制台启动项目node ./app.js
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/12/build-nodejs-proxy-server-to-solve-cross-domain-problems/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
搭建nodejs代理服务器解决跨域问题
初始化项目
npm init -y
创建目录 view 和文件 app.js,view目录下存放项目文件,app.js用来启动本地服务和配置本地代理
安装依赖
安装相关依赖,只需要两个……
文章目录
关闭
共有 0 条评论