情景:利用node的express 作为中间层,跨域调取java后台接口,由于java接口对session有判断,因此每次请求都必须在req的headers中需要带上cookie,否则接口报500错误,通过多次尝试,终于成功调取到接口,代码如下:

 const express = require('express');
const path = require('path');
const proxyMiddleware = require('http-proxy-middleware'); // default port where dev server listens for incoming traffic
const port = 3335; const app = express(); //设置cookie
let cookie;
function relayRequestHeaders(proxyReq, req) {
if (cookie) {
proxyReq.setHeader('cookie', cookie);
}
}; function relayResponseHeaders(proxyRes, req, res) {
let proxyCookie = proxyRes.headers["set-cookie"];
if (proxyCookie) {
cookie = proxyCookie;
}
}; let options = {
target: 'http://192.168.1.2:8081', // target host
changeOrigin: true, // needed for virtual hosted sites
pathRewrite: {
'^/': '/Edit-WS/', // rewrite path
},
onProxyReq: relayRequestHeaders,
onProxyRes: relayResponseHeaders,
}; // 静态资源 处理
app.use(express.static(path.join(__dirname + '/WebRoot'))); // 访问登录页(/)
app.get('/', function(req, res, next) {
console.log('test=============');
let options = {
root: __dirname + '/WebRoot/',
dotfiles: 'deny',
headers: {
'x-timestamp': Date.now(),
'x-sent': true
}
}; let fileName = 'index_2x.html';
res.sendFile(fileName, options, function(err) {
if (err) {
console.log(err);
res.status(err.status).end();
} else {
console.log('Sent:', fileName);
}
});
}); // 匹配的路由(正则)
app.use('/**/*.do', proxyMiddleware(options)); const server = app.listen(port);

最新文章

  1. Integer与int的区别(包装类和基本数据类型的区别)
  2. 实现在Android 下log的使用总结
  3. Bash基本语法
  4. Jython概要
  5. uart串口的调试学习
  6. JavaScript基础---语言基础(2)
  7. Java架构师之路:JAVA程序员必看的15本书
  8. JS调用iframe方式实现Web区域打印页面内容
  9. Android去除系统自带动画的两种方法
  10. MIP 移动网页加速器视频教程全新发布
  11. JavaScript一看就懂(3)数组
  12. Spring Kafka整合Spring Boot创建生产者客户端案例
  13. Laravel 怎么在 blade 视图中将带 HTML 字符原样输出
  14. confluence
  15. Must be between v0 and v15, inclusive解决办法
  16. Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
  17. c的链接详解
  18. C# WebBrowser的8个方法、13个属性和事件
  19. Python 实现图片对比检测
  20. ES6——Class 的基本使用

热门文章

  1. 关于djangorestframework相关源码分析
  2. React点击操作自动定位到另外一个元素
  3. 剑指offer 09:变态跳台阶
  4. Tensorflow训练和预测中的BN层的坑
  5. Antd-Pro2.0版本如何修改代理,让Mock变为真实服务器接口
  6. Hadoop之HDFS的Shell操作
  7. Visual Studio color schemes
  8. Lab 10-2
  9. Unable to resolve dependency问题解决
  10. Android从启动到程序运行整个过程的整理