cookie

cookie的获取和设置

Posted by GroovyKetchup on 2021-02-28
Words 398 and Reading Time 1 Minutes
Viewed Times

以下内容均基于nodejs的express框架进行描述

cookie的获取和设置

nodejs安装cookie-parser,用于解析cookie

1
2
3
4
npm i cookie-parser 

const cookieParser = require('cookie-parser')
app.use(cookieParser());

以登录接口为例子

1
2
3
4
5
6
7
8
9
//登录
app.post('/login',(req,res) => {
res.cookie('add','add',{maxAge: 900000,httpOnly: true})
})

//检验登录
app.get('/loginCheck',(req,res) => {
console.log(req.cookies.add);
})

alt cookie

跨域请求情况下的cookie

ajax同源请求默认是会自动带上cookie,ajax跨域请求默认是不会自动带上cookie

需要采取下列方法(基于CORS):

前端请求需设置:

1
2
3
4
const xhr = new XMLHttpRequest();
xhr.withCredentials = true

jquery: $ajax({xhrFields:{withCredentials:true}})

服务器需设置header:

1
2
3
4
5
6
7
8
9
10
11
12
13
app.use((req,res,next) => {
//允许客户端发送自定义请求头 最好不要设置成通配符样式,而要设置成白名单
res.header('Access-Control-Allow-Headers','a');
//允许前端获取响应头 这个响应头最好不要设置成通配符样式,而要设置成白名单
res.header('Access-Control-Expose-Headers','b')
//允许哪些客户端可以访问服务器 此时Access-Control-Allow-Origin不能为*(星号)了,必须是白名单样式
res.header('Access-Control-Allow-Origin','http://localhost:3000');
//允许客户端以哪种方式访问服务器
res.header('Access-Control-Allow-Methods','get,post');
//跨域带cookie
res.header('Access-Control-Allow-Credentials',true);
next();
})

也可借助cors插件

1
2
3
4
5
6
7
8
9
10
11
12
13
const cors = require('cors')

//enable all cors request
app.use(cors({
allowedHeaders: 'a',
exposedHeaders: 'b',
credentials: true,
methods: 'GET',
origin: 'http://localhost;3000' //不设的话 默认为*
}))

//enable cors for single route
app.use('/get',cors(),(req,res,next) =>{})

This is copyright.

...

...

00:00
00:00