前台页面:

  $.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中间层转发请求的更多相关文章

  1. node转发请求 .csv格式文件下载 中文乱码问题 + 文件上传笔记

    用户无法直接访问后台接口 需要node端转发请求 并将数据以.csv文件格式生成以供客户端下载. 很不幸出现了中文乱码的问题 挖了各种坟帖,下了各种依赖包,csv.json2csv.bufferHel ...

  2. node中间层实现文件上传

    一般情况下,前端的文件上传一般都是通过form表单的(<input type="file" />)来完成文件的上传,如果使用node中间层完成跨域,文件的上传就需要在n ...

  3. nodejs做中间层,转发请求

    简述node中间层的优势 node中间层,可以解决前端的跨域问题,因为服务器端的请求是不涉及跨域的,跨域是浏览器的同源策略导致的,关于跨域可以查看跨域复习使用node坐中间层,方便前后端分离,后端只需 ...

  4. node中间层

    node中间层 一.总结 1.node中间层作用:前端也是mvc,NodeJS之后,前端可以更加专注于视图层,而让更多的数据逻辑放在Node层处理 2.node中间层作用:当发现所有请求量太多应付不过 ...

  5. 细说后端模板渲染、客户端渲染、node 中间层、服务器端渲染(ssr)

    细说后端模板渲染.客户端渲染.node 中间层.服务器端渲染(ssr) 前端与后端渲染方式的发展大致经历了这样几个阶段:后端模板渲染.客户端渲染.node 中间层.服务器端渲染(ssr). 1. 后端 ...

  6. node后台fetch请求数据-Hostname/IP doesn't match certificate's altnames解决方法

    一.问题背景 基于express框架,node后台fetch请求数据,报错Hostname/IP doesn't match certificate's altnames..... require(' ...

  7. Node中间层浅认知

    Node中间层允许前端来做网站路由.页面渲染.SEO优化,对以往从来不接触这些内容的前端选手来说,正是锻炼我们网站架构的好机会.另外,这也是一次深入了解Node的好机会,准备好迎接即将到来的前端工程化 ...

  8. Java Servlet(九):转发请求与重定向请求区别

    转发: <% pageContext.setAttribute("pageContextAttr", "pageContextAttribute"); r ...

  9. IIS充当代理转发请求到Kestrel

    接着上篇博文为ASP.NetCore程序启用SSL的code,这篇将介绍如何用IIS充当反向代理的角色转发请求到Kestrel服务器 与ASP.NET不同,ASP.netCore使用的是自托管web服 ...

随机推荐

  1. Starter pom

    以下图片是引用书籍内容: 比如你在用boot写一个web项目,在maven中你会导入: <!-- 导入spring boot的web支持 --> <dependency> &l ...

  2. Python学习之路——装饰器

    开放封闭原则:不改变调用方式与源代码上增加功能 ''' 1.不能修改被装饰对象(函数)的源代码(封闭) 2.不能更改被修饰对象(函数)的调用方式,且能达到增加功能的效果(开放) ''' 装饰器 # 把 ...

  3. 当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)

    由于历史原因,Python有两个大的版本分支,Python2和Python3,又由于一些库只支持某个版本分支,所以需要在电脑上同时安装Python2和Python3,因此如何让两个版本的Python兼 ...

  4. Flask websocket

    websocket 概念 是一套协议,协议规定了: - 连接时需要握手 - 发送数据进行加密 - 连接之后不断开 意义 实现长轮询等操作 框架支持 - flask,gevent-websocket - ...

  5. 「洛谷1884」「USACO12FEB」过度种植【离散化扫描线】

    题目链接 [洛谷传送门] 题解 矩阵面积的并模板.(请求洛谷加为模板题) 很明显是要离散化的. 我们将矩阵与\(x\)轴平行的两个线段取出来.并且将这两个端点的\(x1\)和\(x2\)进行离散化. ...

  6. Windows编写的shell脚本,在linux上无法执行

    前两天由于要查一个数据库的binlog日志,经常用命令写比较麻烦,想着写一个简单的脚本,自动去刷一下数据库的binlog日志,就直接在windows上面写了,然后拷贝到linux中去运行,其实很简单的 ...

  7. Linux Centos7.x 安装部署Mysql5.7几种方式的操作手册

    简述 Linux  Centos7.x 操作系统版本下针对Mysql的安装和使用多少跟之前的Centos6之前版本有所不同的,下面介绍下在centos7.x环境里安装mysql5.7的几种方法: 一. ...

  8. bootstrap学习: 基本组件以及布局;

    1.下拉菜单: <div class="btn-group"> <button type="button" class="btn b ...

  9. 金融量化分析【day113】:布林带策略

    一.布林带策略简介 1.简介 2.计算公式 3.图形      二.布林带策略代码 import jqdata def initialize(context): set_benchmark('0000 ...

  10. Entity Framework入门教程(4)---EF中的实体关系

    这一节将总结EF是怎么管理实体之间的关系.EF与数据库一样支持三种关系类型:①一对一 ,②一对多,③多对多. 下边是一个SchoolDB数据库的实体数据模型,图中包含所有的实体和各个实体间的关系.通过 ...