vue在响应头response中获取⾃定义headers操作
⽇常开发,我们可能会为了安全问题,保证第三⽅⽆法通过伪造返回报⽂欺骗前端,需要在返回报⽂中添加⾃定义参数,⽤于验证⾝份,后端添加⾃定义参数,前端校验⾃定义参数通过后才会执⾏相应的操作。
系统为了安全会去掉⾃定义头,如果不做任何处理,前端⽆法通过javascript访问⾃定义头,所以需要在接⼝返回中添加这样的操作。
response['Cookie'] ='132********' #⾃定义头
添加后接⼝返回信息如以下截图:
控制台打印headers信息如以下截图:
要正确打印需要在接⼝返回中设置以下信息:
response['Access-Control-Expose-Headers'] = "Cookie" #Cookie为⾃定义头的key
设置完后,打印截图如下:
VUE前端获取代码如下:
this.$http.post("/xx/xxx", {
tel: '12345678901',
code: '123456'
}).then(res => {
if (urnCode == 0) {
if (res.data.bean) {
let cookie = kie;
console.log(cookie);
//校验⾃定义headers,通过则进⾏下⼀步操作
} else {
this.$("失败");
}
} else {
this.$(urnMessage);
}
}).catch(function(error) {
console.log(error);
});
按照上⾯的操作,就可以解决欺骗前端的安全问题。
补充知识:vue前端利⽤localStorage存储token值并放到请求头headers实例
之前在关于登录接⼝的⼀篇博客⾥,我有提到过token,在这篇博客⾥我会介绍token在前端如何存取,同时把它放在请求头⾥获取数据。
1、关于token
为什么要⽤Token:
Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询⽤户名和密码并进⾏对⽐,判断⽤户名和密码正确与否,并作出相应提⽰,在这样的背景下,Token便应运⽽⽣。
Token的定义:
Token是服务端⽣成的⼀串字符串,以作客户端进⾏请求的⼀个令牌,当第⼀次登录后,服务器⽣成⼀个Token便将此Token 返回给客户端,以后客户端只需带上这个Token前来请求数据即可,⽆需再次带上⽤户名和密码。
使⽤Token的⽬的:
Token的⽬的是为了减轻服务器的压⼒,减少频繁的查询数据库,使服务器更加健壮。
Token 的优点:
扩展性更强,也更安全点,⾮常适合⽤在 Web 应⽤或者移动应⽤上。Token 的中⽂有⼈翻译成 “令牌”,我觉得挺好,意思就是,你拿着这个令牌,才能过⼀些关卡。
2、token使⽤要达到的效果
⾸先来看后端给的接⼝⽂档,在关于登录和登出这两个接⼝⾥⾯,后端说他会给你⼀个token值,然后呢你要根据这个token获
取⽤户的信息,⽐如⽤户名、⽤户订单、⽤户收藏啥啥啥的。
接着我们在postman⾥⾯试⼀试,有了这个token值后台会返回什么数据。由于⼀通百通这⾥我们就只看登录页⾯。看下图,返回给我们的是⽤户的⼀些基本信息。
注意点来了!这个token值我们是在登录也就是login.vue这个页⾯从后端获得的。但是我们利⽤这个token值获取⽤户信息是在另⼀个页⾯,看下⾯两张图我们可能更能理解:
也就是说我们在登录页⾯获取token,在“我的”页⾯通过token请求⽤户名放到对应位置。
3、利⽤localStorage存取token实例
登录按钮的js:
handleLogin() {
this.$axios({
method: 'post',
url: '/api/v1/login',
headers: {
'Content-Type': "application/json;charset=UTF-8",
},
data: {
name: this.loginForm.username,
password: this.loginForm.password
})
.then(res=>{ //请求成功后执⾏函数
if(de === 0){
/
/利⽤localstorage存储到本地
localStorage.setItem("token",res.ken)
this.$router.push('/me') //登录验证成功路由实现跳转
console.log("登录成功")
}else{
console.log("登录失败")
}
})
.catch(err=>{ //请求错误后执⾏函
console.log("请求错误")
})
},
在这个登录页⾯我们主要是通过localstorage来把token值存到本地。
核⼼代码:
localStorage.setItem("token",res.ken)
//表⽰把res.ken这个value存储到本地的“token”这个key⾥⾯
这⾥的res.ken,⼀定要注意是否有两个data。从下图可以看到,res.data是指返回的所有数据,因此再有⼀个data 表⽰data⾥边的数据,token就在⾥边了。
- me.vue页⾯取出token值并请求⽤户名js代码:
export default {
data: function () {
return {
name:'',
token:''
}
},
created(){
//页⾯加载时就从本地通过localstorage获取存储的token值
},
mounted() {
this.$axios({
method: 'get',
url: '/api/v1/user',
headers: {
'Content-Type': "application/json;charset=UTF-8",
//把token放到请求头才能请求,这⾥的'Bearer '表⽰是后台希望更加的安全,依据后台给的信息看到底是加还是不加
'Authorization': 'Bearer ' + ken,
}
.then(res=>{ //请求成功后执⾏函数
postman的中文翻译if(de === 0){
//请求成功之后给⽤户名赋值
this.name=res.data.data.username
console.log("登录成功")
}else{
console.log("登录失败")
}
})
.catch(err=>{ //请求错误后执⾏函
console.log("请求错误")
})
},
}
这边同理,直接⽤localstorage取出就好了。
核⼼代码:
created(){
//页⾯加载时就从本地通过localstorage获取存储的token值
},
之后在其他的页⾯如果还需要把token放到请求头,还是直接通过localstorage的getitem就可以取出了,即Item('token')。
以上这篇vue在响应头response中获取⾃定义headers操作就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论