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. Nmap从探测到漏洞利用备忘录 – Nmap简介(一)

    在侦查期间,扫描一直是信息收集的初始阶段. 什么是侦查 侦查是尽可能多收集关于目标网络的信息.从黑客的角度来看,信息收集对于一次攻击非常有用,所以为了封锁恶意的企图,渗透测试者通常尽力查找这些信息,发 ...

  2. 【Python】【环境搭建】

    [环境配置] Windows : http://blog.csdn.net/zhunianguo/article/details/53524792 [Pycharm] pyCharm最新2018激活码 ...

  3. hdu 3579 Hello Kiki 不互质的中国剩余定理

    Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Probl ...

  4. SQLServer 中的SYSPROCESSES表

    性能测试的时候对SQLserver DB中的CPU,io,内存进行监控 可以通过系统进程表查看资源使用情况 注意要有master权限 select top 10 * from SYSPROCESSES ...

  5. C# 二进制图片串互转

    C# byte数组与Image的相互转换   功能需求: 1.把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库. 2.把从数据库读取的byte数组转换为Image对 ...

  6. 代码中特殊的注释技术 -- TODO、FIXME和XXX的用处

    借鉴地址:https://www.cnblogs.com/pengyingh/articles/2445826.html 在阅读一些代码时,经常会遇到诸如:TODO.FIXME和XXX的单词,它们是有 ...

  7. VS2010_x86_编译错误

    1.两个头文件 相互include 报出来的错误,没有直接说是 嵌套include,而是这个现象: error: C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int ...

  8. vs2010_相关目录

    1. C:\Program Files\Microsoft SDKs\Windows\v7.0A 2.创建了 C:\Program Files\Microsoft Visual Studio 9.0 ...

  9. 《剑指offer》第三十五题(复杂链表的复制)

    // 面试题35:复杂链表的复制 // 题目:请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复 // 制一个复杂链表.在复杂链表中,每个结点除 ...

  10. 《剑指offer》第四题(二维数组中的查找)

    // 二维数组中的查找 // 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按 // 照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个 // 整数,判断数组 ...