node中间层转发请求
前台页面:
$.get("/api/hello?name=leyi",function(rps){
console.info(rps);
});
node中间层(比如匹配api开头的所有请求):
var express = require('express');
var qs = require("qs")
var http = require("http");
var querystring = require('querystring');
app.all(/\/api/, function(req, res) {
let strData = qs.stringify(req.body); //请求体中的数据(比如post提交的数据)
let options = {
host: 'localhost', //后台请求地址
port: 8081,
path: req.url.substr(4),
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': strData.length
}
};
options.headers = Object.assign(options.headers, req.headers); //带上客户端请求头(包含cookie之类的东西)
let httpRequest = http.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
let _data = '';
res.on('data', function(chunk) {
_data += chunk;
});
res.on('end', function() {
sendData(_data);
});
});
httpRequest.write(strData); //写入数据到请求主体
httpRequest.end();
function sendData(data) {
res.send(data);
}
});
node后台:
var express = require('express');
var app = express();
var querystring=require("querystring");
app.post("/hello", function(req, res) {
console.info("req.headers", req.headers); //node中间层带来的请求头
console.info("req.query", req.query); //url上的查询参数
let data = '';
req.on('data', function(chunk) {
data += chunk;
});
req.on('end', function() {
data = decodeURI(data);
console.log("data", data);
let dataObject = querystring.parse(data);
console.log("dataObject", dataObject);
});
res.json({ "result": "hello world!" });
});
node中间层转发请求的更多相关文章
- node转发请求 .csv格式文件下载 中文乱码问题 + 文件上传笔记
用户无法直接访问后台接口 需要node端转发请求 并将数据以.csv文件格式生成以供客户端下载. 很不幸出现了中文乱码的问题 挖了各种坟帖,下了各种依赖包,csv.json2csv.bufferHel ...
- node中间层实现文件上传
一般情况下,前端的文件上传一般都是通过form表单的(<input type="file" />)来完成文件的上传,如果使用node中间层完成跨域,文件的上传就需要在n ...
- nodejs做中间层,转发请求
简述node中间层的优势 node中间层,可以解决前端的跨域问题,因为服务器端的请求是不涉及跨域的,跨域是浏览器的同源策略导致的,关于跨域可以查看跨域复习使用node坐中间层,方便前后端分离,后端只需 ...
- node中间层
node中间层 一.总结 1.node中间层作用:前端也是mvc,NodeJS之后,前端可以更加专注于视图层,而让更多的数据逻辑放在Node层处理 2.node中间层作用:当发现所有请求量太多应付不过 ...
- 细说后端模板渲染、客户端渲染、node 中间层、服务器端渲染(ssr)
细说后端模板渲染.客户端渲染.node 中间层.服务器端渲染(ssr) 前端与后端渲染方式的发展大致经历了这样几个阶段:后端模板渲染.客户端渲染.node 中间层.服务器端渲染(ssr). 1. 后端 ...
- node后台fetch请求数据-Hostname/IP doesn't match certificate's altnames解决方法
一.问题背景 基于express框架,node后台fetch请求数据,报错Hostname/IP doesn't match certificate's altnames..... require(' ...
- Node中间层浅认知
Node中间层允许前端来做网站路由.页面渲染.SEO优化,对以往从来不接触这些内容的前端选手来说,正是锻炼我们网站架构的好机会.另外,这也是一次深入了解Node的好机会,准备好迎接即将到来的前端工程化 ...
- Java Servlet(九):转发请求与重定向请求区别
转发: <% pageContext.setAttribute("pageContextAttr", "pageContextAttribute"); r ...
- IIS充当代理转发请求到Kestrel
接着上篇博文为ASP.NetCore程序启用SSL的code,这篇将介绍如何用IIS充当反向代理的角色转发请求到Kestrel服务器 与ASP.NET不同,ASP.netCore使用的是自托管web服 ...
随机推荐
- BOS判断字段为空
- Starter pom
以下图片是引用书籍内容: 比如你在用boot写一个web项目,在maven中你会导入: <!-- 导入spring boot的web支持 --> <dependency> &l ...
- JAVA多线程-实现同步
一.什么是线程安全问题 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题.但是做读操作是不会发生数据冲突问题. 二.如何解决线程安全问题 1)如何 ...
- 安装zabbix 遇到的一些问题
yum install epel-release yum install OpenIPMI-modalias fping iksemel net-snmp* perl-Data-Dumper 正在解 ...
- 如何打印consul的错误信息
在配置文件中添加 management: endpoints: web: exposure: include: "*" endpoint: shutdown: enabled: t ...
- 【BZOJ5502】[GXOI/GZOI2019]与或和(单调栈)
[BZOJ5502][GXOI/GZOI2019]与或和(单调栈) 题面 BZOJ 洛谷 题解 看到位运算就直接拆位,于是问题变成了求有多少个全\(0\)子矩阵和有多少个全\(1\)子矩阵. 这两个操 ...
- BZOJ4671异或图
题目描述 定义两个结点数相同的图 G1 与图 G2 的异或为一个新的图 G, 其中如果 (u, v) 在 G1 与 G2 中的出现次数之和为 1, 那么边 (u, v) 在 G 中, 否则这条边不在 ...
- Matlab中simulink的state space模块
%列写状态空间表达式矩阵 A=[- -;]; B=[ ; ]; C=[ ; ]; D=[ ; ]; %得到传递函数表达式 [num, den]=ss2tf(A, B, C, D, ); %在命令行打印 ...
- Pack
背包专题 背包吼哇! 基础的背包分为OI01背包,完全背包,多重背包,二维背包,分组背包,树形背包,求方案数等.......... 作为DP的一个基础部分还是有必要写一写的. 01背包: 一个物品能取 ...
- ubuntu16.04+cuda9+cudnn7+tensorflow+pycharm环境搭建
安装环境:ubuntu16.04+cuda9+cudnn7+tensorflow+pycharm 1)前期搭建过程主要是按照这篇博文,对于版本选择,安装步骤都讲得很详细,亲测有效! https://b ...