angular8实现前端携带cookie发送给后端+nodejs获取前端发送的cookie
1.前端测试代码angular8
// 测试代码
testCookie() {
const url = 'http://10.11.11.11:3000/test/cookie'
const params = {a:1}
// {withCredentials: true} 这个是重点!!!!
this.http.post( url,{}, params, {withCredentials: true}).subscribe(_ => {
console.log(_)
})
}
// 测试代码
2.后端测试代码nodejs
app.js
const express=require('express');
// const bodyParser=require('body-parser');
const session = require('express-session')
var MySQLStore = require('express-mysql-session')(session);
var options = {
host: '22.22.22.22',
port: 3306,
user: 'root',
password: '123',
database: 'aaa'
};
var sessionStore = new MySQLStore(options);
//引入路由模块
const cors=require('cors');
// const index=require("./routes/index");
const test = require('./routers/test')
//创建web服务器
var server=express();
//托管静态资源到public下;
server.use(express.static('public'));
//跨域请求cors
server.use(cors
(
{
// origin:"*" ,
// origin:"http://localhost:8080" ,
origin:"http://10.11.33.33:4200" ,
// origin:"http://127.0.0.1:5500" ,
credentials: true
}
)
);
// server.writeHead(200,{"Access-Control-Allow-Credentials":true});
server.use(express.json())
server.use(express.urlencoded({
extended:false
}));
//session 启用会话中间件,用来保存用户登录状态以及验证码
server.use(session({
name: 'sessionId',
resave: true,
saveUninitialized: true,
secret: 'APP_SESSION_SECRET',
store: sessionStore // 将会话存到数据库
}))
server.use('/test',test);
server.use('/index',index);
server.use((req, res, next) => {
res.status(404).send('404 not found')
})
// 异常处理器
server.use((req,res,next,err)=>{
console.log('err.message')
console.log(err.message)
// res.send(500);
})
server.listen(3000);
./routers/test.js
const i18n = require('../i18n')
//创建路由器对象
const express = require('express')
//引入连接池模块
const pool = require('../pool.js')
const querystring = require('querystring')
const bodyParser = require('body-parser')
//创建路由器对象
var router = express.Router()
var code200 = { code: 200, msg: 'successful' }
var code401 = {
code: 401,
msg: 'this is required,so you cannot leave any of those blank ',
}
var code403 = { code: 403, msg: 'something has wrong' }
//post提交需要三项,引入body-parser 中间件 然后.body
router.use(
bodyParser.urlencoded({
extended: false,
})
)
// 查询MC(Move Change)
router.post('/cookie', function (req, res) {
var obj = req.body
var cooki = req.headers.cookie
console.log('打印COOKIE')
console.log(cooki)
let data = {
data: [1,2,1],
msg: 'SearchMC Success',
status: 'Success',
}
setTimeout(() => {
res.send(data)
}, 100)
})
//导出路由器对象
module.exports = router
3.开始发送请求,你会发现
4.request headers里多了一个cookie字段,并且后端代码可以把前端发送的cookie打印出来了~~~~
angular8实现前端携带cookie发送给后端+nodejs获取前端发送的cookie的更多相关文章
- 后端Apache获取前端Nginx反向代理的真实IP地址 (原创贴-转载请注明出处)
====================说在前面的话==================== 环境:前段Nginx是反向代理服务器:后端是Apache是WEB项目服务器 目的:让后端Apapche获取 ...
- Nginx 负载均衡 后端服务器获取前端用户真实IP
Nginx 后端 日志文件 获取的都是 前端 负载均衡器的IP 想要获取用户的真实IP 必须 使用Nginx 的模块 http_realip_module 才行!! 1. 编译 Nginx 的时候 ...
- NodeJS + PhantomJS 前端自动化资源监控
前言:最近做前端资源监控,看了很多例子,没有达到想要的效果.首先的槽点是PhantomJS的官方文档,真鸡肋,其次是网上的例子,多数是介绍PhantomJS的用法,而并没有介绍怎么完整的去实现,跟官方 ...
- 前后端分离框架前端react,后端springboot跨域问题分析
前后端分离框架前端react,后端springboot跨域问题分析 为啥跨域了 前端react的设置 springboot后端设置 为啥跨域了 由于前后端不在一个端口上,也是属于跨域问题的一种,所以必 ...
- 前端nginx时,让后端tomcat记录真实IP【转】
对于nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP.因此,需要对nginx.tomcat做如 ...
- 聚是一团火散作满天星,前端Vue.js+elementUI结合后端FastAPI实现大文件分片上传
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_175 分片上传并不是什么新概念,尤其是大文件传输的处理中经常会被使用,在之前的一篇文章里:python花式读取大文件(10g/50 ...
- 【开源】分享一个前后端分离方案-前端angularjs+requirejs+dhtmlx 后端asp.net webapi
一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家.关于前后端分离这个话题大家也谈了很久了,希望我这个实践能对大家有点点帮助,演示和源码都贴在后面. 二.技术架构 这两年a ...
- 简单利用jQuery加tomcat,让前端开发不再依赖于后端的接口
前端开发的过程中,我们免不了和后端进行联调,这时候就会出现以下的尴尬场景: 接口没写好,没法做接下来的功能 功能写好了,接口没写好,没法测这个功能 联调了,除了BUG,不知道锅在谁身上,只得陪后端耗时 ...
- 框架基础:ajax设计方案(三)--- 集成ajax上传技术 大文件/超大文件前端切割上传,后端进行重组
马上要过年了,哎,回家的心情也特别的激烈.有钱没钱,回家过年,家永远是舔舐伤口最好的地方.新的一年继续加油努力. 上次做了前端的ajax的上传文件技术,支持单文件,多文件上传,并对文件的格式和大小进行 ...
- 简单利用jQuery,让前端开发不再依赖于后端的接口
前端开发的过程中,我们免不了和后端进行联调,这时候就会出现以下的尴尬场景: 接口没写好,没法做接下来的功能 功能写好了,接口没写好,没法测这个功能 联调了,出了BUG,不知道锅在谁身上,只得陪后端耗时 ...
随机推荐
- SpringCloud(二) - Eureka注册中心,feign远程调用,hystrix降级和熔断
1.项目模块介绍 2. 父项目 主要依赖 spring-cloud 的 版本控制 <properties> <!-- springCloud 版本 --> <scd.ve ...
- 设置CMD命令的初始目录
本文提供两种方式,第一种通过打开桌面上的快捷方式实现,第二种可以通过 CMD 命令直接进入. 快捷方式 "开始 ---> 程序 ---> 附件",右键单击 " ...
- VBA---Basic
题记: 之前用VBA做过几个小工具,用来实现办公自动化的.在编写过程中也遇到了一些问题,但最终都通过网友们的分享予以解决,现对其中的一些知识点进行总结. common sense 取消文件刷新: Ap ...
- Docker | 常用命令——排错很有帮助
众所周知,docker 排查问题相较而言是困难的.因此,熟知一些常用命令对我们快速的排查定位问题是非常有帮助的.下面让我们一起来学习一下吧 1.显示docker的系统信息 docker info [r ...
- 【Logback+Spring-Aop】实现全面生态化的全链路日志追踪系统服务插件「Logback-MDC篇」
日志追踪 日志追踪对于功能问题的排查和数据流转的路径分析时非常重要的,有了全链路日志追踪体系机制可以非常有效且快速的定位问题,但在多线程环境中,若没有相关成熟的框架的支持,想要实现日志追踪,就需要手动 ...
- AFL源码分析(一)
AFL源码分析(一) 文章首发于:ChaMd5公众号 https://mp.weixin.qq.com/s/E-D_M25xv5gIpRa6k8xOvw a.alf-gcc.c 1.find_as 这 ...
- Devexpress控件pivotGridControl显示字段面板
可在窗口加载的时候使用函数 pivotGridControl1.ShowCustomization(); 大家如果有问题可以 Console.WriteLine("加群"+&quo ...
- <二>派生类的构造过程
派生类从继承可以继承来所有的成员(变量和方法) 除了构造函数和析构函数 派生类怎么初始化从基类继承来的成员变量的呢?通过调用基类的构造函数来初始化 派生类的构造函数和析构函数,负责初始化和清理派生类部 ...
- 【Shell脚本案例】案例5:找出CPU/内存率占用高的进程
一.背景 找出占用高的进程 使用脚本编写找出占用CPU的进程 二.分析 1.查看进程 top 输入后按C,就可以列出 其他: ps aux 2.思路 awk进行排序,如top10 即ps aux |a ...
- 12V转5V降压芯片,12V转3.3V稳压芯片电路图
12V转5V应用中,大多要求会输出电流高的,稳压LDO就不能满足了,需要使用DC-DC降压芯片来持续稳压5V,输出电流1000MA,2000MA,3000MA,5000MA等.不同的输出电流可以选择适 ...