var http = require("http");
var data = ''; function getData() {
const options = {
host: 'www.baidu.com',
port: 80,
path: '/index.html',
method: 'GET',
headers: {
'Content-Type':'text/html',
}
}; const req = http.request(options, (res) => {
console.log(`状态码: ${res.statusCode}`);
console.log(`响应头: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
data += chunk;
//console.log(`响应主体: ${chunk}`);
});
res.on('end', () => {
// console.log(data);
console.log('响应中已无数据');
// return data
});
}); req.end();
} //调用
// getData();
// setTimeout(()=>{
// console.log(data)
// },300) http.createServer((req, res) => { getData();
// Content Type: text/html
res.writeHead(200, {
'Content-Type': 'text/html',
});
// 响应文件内容
setTimeout(() => {
res.write(data.toString());
res.end();
}, 300) }).listen(80, () => {
console.log('服务器开启成功')
})

项目中请使用:express+http-proxy-middleware

为什么要使用node代理转发?

我们要实现前后端分离,然后前端不在自己的电脑上安装tomcat,这时候,我们通过用node搭建服务器,然后转发我们的请求。例如:自己本地是localhost:3000,我们需要访问http://www.example.com(当然,开发过程中,这个应该是你们后台的tomcat的地址), 来做ajax的数据交互。

创建项目

1
npm init

安装模块

1
npm install express connect-timeout http-proxy-middleware --save-dev

创建js文件

const express = require('express');
const timeout = require('connect-timeout');
const proxy = require('http-proxy-middleware');
const app = express(); // 超时时间
const TIME_OUT = 30 * 1e3; // 设置端口
app.set('port', '80'); // 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
if (!req.timedout) next();
}); proxyOption = {
target: 'http://localhost:8080',
pathRewrite: {
'^/api/' : '/' // 重写请求,api/解析为/
},
changeOrigoin:true
}; // 静态资源路径
app.use('/', express.static('src/page')); // 反向代理
app.use('/api/*', proxy(proxyOption)); // 监听端口
app.listen(app.get('port'), () => {
console.log(`server running @${app.get('port')}`);
});

最新文章

  1. Uva 10891 经典博弈区间DP
  2. C++学习心得
  3. 深入理解学习Git工作流
  4. Auty自动化测试框架第三篇——添加异常处理与日志收集
  5. 使用个推的时候出现Installation error: INSTALL_FAILED_DUPLICATE_PERMISSION
  6. 使用java开源工具httpClient及jsoup抓取解析网页数据
  7. Windows 7 bug: nonexistent Java Runtime Enviroment
  8. Objective-C 获取当前执行函数的名称
  9. PHP面向对象(OOP):抽象方法和抽象类(abstract)
  10. Java 基础之 static 静态
  11. 如何实现跨 Docker 主机存储?- 每天5分钟玩转 Docker 容器技术(73)
  12. 6. Scala面向对象编程(基础部分)
  13. zabbix之 qq邮件报警
  14. composer install Your requirements could not be resolved to an installable set of packages
  15. Android动态添加Device Admin权限
  16. 跟着未名学 - 录屏套件 Camtasia Studio
  17. ubuntu增加工作分区命令
  18. 2019.01.13 bzoj4538: [Hnoi2016]网络(树链剖分)
  19. Spring Boot中使用@Scheduled创建定时任务
  20. Linux - 常用归档、压缩命令

热门文章

  1. Pipe——高性能IO(一)
  2. Latex学习与使用
  3. python访问kafka
  4. 易优CMS:channel的基础用法
  5. 关于VAD的两种内存隐藏方式
  6. Spring注解式AOP面向切面编程.
  7. ASP.NET MVC5基础-控制器(Controller)详解
  8. ASP.NET Core 2.2 WebApi 系列【六】泛型仓储模式
  9. Java每日一面(Part1:计算机网络)[19/10/14]
  10. 松软科技web课堂:JavaScript 数组