1、 利用package.json 安装nodejs,创建package.json文件:内容如下

"dependencies": {
"http-proxy": "^1.16.2"
}

2、 当前目录下创建 index.js文件:内容如下
var PORT = 3000;
var projectPath = '/../project'; // 本地项目路径 var http = require('http');
var url=require('url');
var fs=require('fs');
var mine=require('./mine').types;
var path=require('path');
var httpProxy = require('http-proxy'); var proxy = httpProxy.createProxyServer({
target: 'http://192.168.12.220:8080/', //接口地址
// 下面的设置用于https
// ssl: {
// key: fs.readFileSync('server_decrypt.key', 'utf8'),
// cert: fs.readFileSync('server.crt', 'utf8')
// },
// secure: false
}); proxy.on('error', function(err, req, res){
res.writeHead(500, {
'content-type': 'text/plain'
});
console.log(err);
res.end('Something went wrong. And we are reporting a custom error message.');
}); var server = http.createServer(function (request, response) {
var pathname = url.parse(request.url).pathname;
//var realPath = path.join("main-pages", pathname); // 指定根目录
console.log(pathname);
var realPath = path.join("."+projectPath+'/', pathname);
var ext = path.extname(realPath);
ext = ext ? ext.slice(1) : 'unknown'; //判断如果是接口访问,则通过proxy转发
if(pathname.indexOf("/deviceService") > -1){
proxy.web(request, response);
return;
} fs.exists(realPath, function (exists) {
if (!exists) {
response.writeHead(404, {
'Content-Type': 'text/plain'
}); response.write("This request URL " + pathname + " was not found on this server.");
response.end();
} else {
fs.readFile(realPath, "binary", function (err, file) {
if (err) {
response.writeHead(500, {
'Content-Type': 'text/plain'
});
response.end(err);
} else {
var contentType = mine[ext] || "text/plain";
response.writeHead(200, {
'Content-Type': contentType
});
response.write(file, "binary");
response.end();
}
});
}
});
});
server.listen(PORT);
console.log("Server runing at port: " + PORT + ".");

3、 如 index.js 第二行所配置:在当前目录上层目录创建项目文件夹 project
放入index.html 测试页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>1111</title>
<script>
function readFile(a,back){
setTimeout(function(){
back(a);
},1000);
} const Thunk = function(fn) {
return function (...args) {
return function (callback) {
return fn.call(this, ...args, callback);
}
};
};
var tf = Thunk(readFile); var gg = {
*g(){
var f1 = yield tf('fileA');
console.log('---->>',f1);
var f2 = yield tf('fileB');
console.log('---->>',f2);
// if (f2=="fileB")
// return;
// ...
var fn = yield tf('fileN');
console.log('---->>',fn);
}
}
var g = function* () {
var f1 = yield tf('fileA');
console.log('---->>',f1);
var f2 = yield tf('fileB');
console.log('---->>',f2);
// if (f2=="fileB")
// return;
// ...
var fn = yield tf('fileN');
console.log('---->>',fn);
} const run_thunk = function (fn) {
var gen = fn(); function next(err, data) {
var result = gen.next(err);
if (result.done) return;
result.value(next);
}
next();
} function * a(){
yield 1;
yield 2;
} var init = function(){
// run_thunk(gg.g);
var m = setTimeout(function(){
alert('hell');
},5000); setTimeout(function(){
clearTimeout(m);
alert('111');
},1000);
// var i = a();
// console.log(i.next());
// console.log(i.next());
// console.log(i.next());
}
init();
</script>
</head>
<body>
1111
</body>
</html>

4、cnpm install

5、node index.js 开启3000服务

6、注:mine.js 内容:

exports.types = {
"css": "text/css",
"gif": "image/gif",
"html": "text/html",
"ico": "image/x-icon",
"jpeg": "image/jpeg",
"jpg": "image/jpeg",
"js": "text/javascript",
"json": "application/json",
"pdf": "application/pdf",
"png": "image/png",
"svg": "image/svg+xml",
"swf": "application/x-shockwave-flash",
"tiff": "image/tiff",
"txt": "text/plain",
"wav": "audio/x-wav",
"wma": "audio/x-ms-wma",
"wmv": "video/x-ms-wmv",
"xml": "text/xml",
"woff": "application/x-woff",
"woff2": "application/x-woff2",
"tff": "application/x-font-truetype",
"otf": "application/x-font-opentype",
"eot": "application/vnd.ms-fontobject"
};

项目结构:     -----  nodeServer

|---- package.json

|---- index.js

|---- mine.js

|---- node_modules

-----  project

|---- index.html

在本地设置 http-proxy 代理 (前后端分离)的更多相关文章

  1. nginx反向代理前后端分离项目(后端多台)

    目前软件架构都比较流行前后端分离,前后端的分离也实现了前后端架构的分离,带来的好处 —— 整个项目的开发权重往前移,实现真正的前后端解耦,动态资源和静态资源分离,提高了性能和扩展性. 通常Spring ...

  2. express的proxy实现前后端分离

    var express = require('express') var proxy = require('http-proxy-middleware') var app = express() ap ...

  3. mock的使用及取消,node模仿本地请求:为了解决前后端分离,用户后台没写完接口的情况下

    借鉴:https://www.jianshu.com/p/dd23a6547114 1.说到这里还有一种是配置node模拟本地请求 (1)node模拟本地请求: 补充一下 [1]首先在根目录下建一个d ...

  4. 前后端分离产生的跨域问题的解决方案之--jsonp、nginx代理、设置头信息等

    前言 在前后端没有分离的时候,前端开发要么是写静态页面,数据渲染后端来做,要么就是前端的页面和后端的代码刚开始的时候就合并在一起,每次后端代码更新了之后,前端也要更新一下代码,然后重启一下服务,还是比 ...

  5. 在centos7.6上部署前后端分离项目Nginx反向代理vue.js2.6+Tornado5.1.1,使用supervisor统一管理服务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_102 这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广 ...

  6. nginx反向代理实现前后端分离&跨域问题

    1.代理和跨域 1.1 正向代理 1)用户希望代理服务器帮助其和要访问服务器之间实现通信,需要: a.用户IP报文的目的IP=代理服务器IP: b.用户报文端口号=代理服务器监听端口号: c.HTTP ...

  7. 前后端分离跨域 关于前后端分离开发环境下的跨域访问问题(angular proxy=>nginx )

    前后端分离后遇到了跨域访问的问题: angular1中使用proxy很麻烦,最后还是失败结束:最后总结3种方法如下: 本人使用的第一种方法,只是开发环境下使用很方便! 1:禁掉谷歌的安全策略(Turn ...

  8. nginx 前后端分离 代理转发,解决跨域问题

    场景 适用于公司有前端,项目采用前后端分离.类似于我们 后端 springboot 提供接口,前端专门写html调用相应的接口,解决跨域问题 配置说明 worker_processes 1; even ...

  9. 简述前后端分离的情况下,Vue实现点击图片下载到本地(并实现IE11浏览器的兼容)

    1.简述 在前后端分离的项目中涉及跨域问题,通常都会使用token进行验证.最近在前后端分离的项目中在一个问题上搞了很久,就是以前下载附件或者导出数据为文件的时候,在以前的那些项目前端可以直接用 wi ...

随机推荐

  1. Linux 后台进程管理和就几个“Ctrl+”命令 【转载】

    一.后台进程管理命令 fg.bg.jobs.&.ctrl + z.ctrl + c.ctrl + \.ctrl + d1. &加在一个命令的最后,可以把这个命令放到后台执行 ,如gft ...

  2. idea运行main方法报错,提示Shorten command line for xxx

    在Intell IDEA运行main函数的时候遇到了如下错误: Error running' xxxxxx': Command line is too long. Shorten command li ...

  3. Python 爬虫-Scrapy爬虫框架

    2017-07-29 17:50:29 Scrapy是一个快速功能强大的网络爬虫框架. Scrapy不是一个函数功能库,而是一个爬虫框架.爬虫框架是实现爬虫功能的一个软件结构和功能组件集合.爬虫框架是 ...

  4. js中如何访问对象和数组

    js中如何访问对象和数组 一.总结 一句话总结:js访问对象点和中括号,访问数组的话就是中括号 对象 . [] 数组 [] 1.js访问对象的两种方式? . [] 可以使用下面两种方式访问对象的属性和 ...

  5. [.NET开发] C# 合并、拆分PDF文档

    在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输.当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档.可以任意地对文档进行合并.拆分无疑为我们了提供极 ...

  6. WPF中为窗体设置背景图片

    在WPF应用程式中,我们往往想为一个窗体设置一个中意的背景图,而不是单独的为这个Background设置成某种颜色或渐变颜色的背景. 在WPF 利用Expression Blend工具如何达到这种效果 ...

  7. 12月17日周日 form_for的部分理解。belongs_to的部分理解

    1.lean guide:helper method query ,✅

  8. ssh: connect to host 192.168.11.180 port 22: Connection refused

    错误原因: 1.sshd 未安装:sudo apt-get install openssh-server 2.sshd 未启动:sudo net start sshd 3.防火墙:sudo ufw d ...

  9. uva-11426-数论

    https://vjudge.net/problem/UVA-11426#author=0 求 SUM{ gcd(i,j) | 1<=i<j<=n}, n<4000001. 令 ...

  10. PL/SQL Developer 一段时间后变慢,且导致数据库CPU100%的问题(转)

    参考: 一段时间不用plsql developer之后重新使用会变得很慢 plsql developer连接数据库导致服务器cpu升高的案例 1.pl/sql dev 变慢的问题,建议设置如下 2. ...