设置验证码和获取验证码
phoneCode.get('/code', (req, res) => {
req.session.code = "1234"
console.log(req.session);
successSend(res, {}, "发送成功")
})
log.post('/register', (req, res) => {
const body = req.body
const account = body.account || ""
const password = body.password || ""
const mobile = body.mobile || ""
const code = body.code || ""
const set_Mobile = req.session.regMobile || ""
if (set_Mobile) {
if (m.checkEmpty(res, account, password)) return
db.user.create({
account: account,
password: password,
mobile: set_Mobile,
nickname: m.getNickName()
})
} else {
if (m.checkEmpty(res, account, password, mobile, code)) return
console.log(req.session);
结果是输出:
Session {
cookie: {
path: '/',
_expires: 2021-01-12T08:24:18.081Z,
originalMaxAge: 660000,
httpOnly: true
},
code: '1234'
}
Session {
cookie: {
path: '/',
_expires: 2021-01-12T08:24:24.499Z,
originalMaxAge: 660000,
httpOnly: true
}
}
可以看到第一个session有code,第二个就没有
然后去查了,说可能是跨域没有携带cookie的问题,于是前端又在请求时加上了 withCredentials,请求头也有withCredentials: true
request.headers['withCredentials'] = true
然后session还是没有code的值
node的请求头设置
res.header('Access-Control-Allow-Origin', req.headers.origin)
res.header("X-Powered-By", ' 3.2.1');
res.header('Access-Control-Allow-Headers', '*');
res.header('Access-Control-Allow-Methods', 'get,post')
res.header('Access-Control-Allow-Credentials', true)
res.setHeader('Content-Type', 'application/json');
前端跨域
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:3000/',
secure: false,
changeOrigin: true,
ws: true,
pathRewrite: {
'^/api': ''
}
},
},
}
}
最后解决了,就是跨域问题
vue.config.js:
module.exports = {
devServer: {
host: 'localhost',
port: 8080,
https: false,
hotOnly: true,
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: false,
pathRewrite: {
'^/api': ''
}
}
},
headers: {
'Access-Control-Allow-Origin': '*',
}
}
}
axios
private client = axios.create({
baseURL: '/api',
timeout: 100000,
});