日常开发,我们可能会为了安全问题,确保第三方无法通过伪造返回报文欺骗前端,需要在返回报文中添加自定义参数,用于验证身份,后端添加自定义参数,前端校验自定义参数通过后才会执行相应的操作。

系统为了安全会去掉自定义头,如果不做任何处理,前端无法通过javascript访问自定义头,所以需要在接口返回中添加这样的操作。

response['Cookie'] ='13231231231' #自定义头

添加后接口返回信息如以下截图:

控制台打印headers信息如以下截图:

要正确打印需要在接口返回中设置以下信息:

response['Access-Control-Expose-Headers'] = "Cookie" #Cookie为自定义头的key

设置完后,打印截图如下:

VUE前端获取代码如下:

this.$http.post("/xx/xxx", {

tel: '12345678901',

code: '123456'

}).then(res => {

if (res.data.returnCode == 0) {

if (res.data.bean) {

let cookie = res.headers.cookie;

console.log(cookie);

//校验自定义headers,通过则进行下一步操作

} else {

this.$Message.error("失败");

}

} else {

this.$Message.error(res.data.returnMessage);

}

}).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(res.data.code === 0){

//利用localstorage存储到本地

localStorage.setItem("token",res.data.data.token)

this.$router.push('/me') //登陆验证成功路由实现跳转

console.log("登陆成功")

}else{

console.log("登陆失败")

}

})

.catch(err=>{ //请求错误后执行函

console.log("请求错误")

})

},

在这个登陆网页我们主要是通过localstorage来把token值存到本地。

内核代码:

localStorage.setItem("token",res.data.data.token)

//表示把res.data.data.token这个value存储到本地的“token”这个key里面

这里的res.data.data.token,一定要注重是否有两个data。从下图可以看到,res.data是指返回的所有数据,因此再有一个data表示data里边的数据,token就在里边了。

- me.vue网页取出token值并请求用户名js代码:

export default {

data: function () {

return {

name:'',

token:''

}

},

created(){

//网页加载时就从本地通过localstorage获取存储的token值

this.token = localStorage.getItem('token')

},

mounted() {

this.$axios({

method: 'get',

url: '/api/v1/user',

headers: {

'Content-Type': "application/json;charset=UTF-8",

//把token放到请求头才能请求,这里的'Bearer '表示是后台希望更加的安全,依据后台给的信息看到底是加还是不加

'Authorization': 'Bearer ' + this.token,

}

})

.then(res=>{ //请求成功后执行函数

if(res.data.code === 0){

//请求成功之后给用户名赋值

this.name=res.data.data.username

console.log("登陆成功")

}else{

console.log("登陆失败")

}

})

.catch(err=>{ //请求错误后执行函

console.log("请求错误")

})

},

}

这边同理,直接用localstorage取出就好了。

内核代码:

created(){

//网页加载时就从本地通过localstorage获取存储的token值

this.token = localStorage.getItem('token')

},

之后在其他的网页如果还需要把token放到请求头,还是直接通过localstorage的getitem就可以取出了,即localStorage.getItem('token')。

以上这篇vue在响应头response中获取自定义headers操作就是小编共享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持乐购源码。

vue中headers是什么_vue在响应头response中获取自定义headers操作相关推荐

  1. vue页面返回消息头获取_vue在响应头response中获取自定义headers操作

    日常开发,我们可能会为了安全问题,保证第三方无法通过伪造返回报文欺骗前端,需要在返回报文中添加自定义参数,用于验证身份,后端添加自定义参数,前端校验自定义参数通过后才会执行相应的操作. 系统为了安全会 ...

  2. 请求头(request headers)和响应头(response headers)解析

    原文地址:https://www.cnblogs.com/fighter007/p/8445435.html HTTP 中文开发手册:http://www.php.cn/manual/view/355 ...

  3. 转:PHP--获取响应头(Response Header)方法

    转:http://blog.sina.com.cn/s/blog_5f54f0be0102uvxu.html PHP--获取响应头(Response Header)方法 方法一: ========== ...

  4. 【译】在ASP.Net和IIS中删除不必要的HTTP响应头

    引入 每次当浏览器向Web服务器发起一个请求的时,都会伴随着一些HTTP头的发送.而这些HTTP头是用于给Web服务器提供一些额外信息以便于处理请求.比如说吧.如果浏览器支持压缩功能,则浏览器会发送A ...

  5. 在ASP.Net和IIS中删除不必要的HTTP响应头

    引入 每次当浏览器向Web服务器发起一个请求的时,都会伴随着一些HTTP头的发送.而这些HTTP头是用于给Web服务器提供一些额外信息以便于处理请求.比如说吧.如果浏览器支持压缩功能,则浏览器会发送A ...

  6. node html响应头,nodejs 中http请求头,响应头

    -------------------- 1.request常见的属性 ----------------------- var http=require("http"); var ...

  7. php 接口响应头处理,PHP--获取响应头(Response Header)方法

    方法一: ========================================== $baiduUrl = "http://www.baidu.com/link?url=LZE_ ...

  8. vue修改代码同步页面_vue实现两个组件之间数据共享和修改操作

    我们在使用vue开发过程中会遇到这样的情况,在父组件中引入了子组件,需要将父组件的值传到子组件中显示,同时子组件还可以更改父组件的值. 以我目前的一个项目的开发为例,如下图页面: 在父组件中,我引入了 ...

  9. js获取服务器响应头信息,js获取HTTP的请求头信息

    [IIS]IIS扫盲(二) iis - IIS之Web服务器建立 第一篇 IIS之Web服务器  一.建立第一个Web站点  比如本机的IP地址为192.168.0.1,自己的网页放在D:\Wy目录下 ...

  10. ios12彻底关闭siri_Siri正在iOS 12中获取自定义语音操作

    ios12彻底关闭siri Siri is about to get a lot more powerful. Custom voice commands for any app will allow ...

最新文章

  1. EasyRTMP手机直播推送rtmp流flash无法正常播放问题
  2. 用css3简单实现进度条
  3. paho mqtt client调试记录
  4. 将txt文件的编码格式进行修改
  5. MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案
  6. 新的Teams API权限控制
  7. (连续子序列)唯一的雪花
  8. 面向对象 —— 类设计(十一)—— 构造与析构
  9. android studio约束布局,在Android Android Studio的上下文菜单中添加约束布局障碍
  10. linux两个命令合并,linux合并命令
  11. 服务器如何装linux 系统教程,教程/操作系统 手把手教你装Linux系统
  12. WIN10彻底禁用UAC(用户账户控制)
  13. Spring的事务控制
  14. 阿基米德螺旋线原理及代码
  15. win7防火墙怎么关_win7系统防火墙开启失败怎么办【解决方法】
  16. 国外大牛的黑苹果配置清单
  17. C++_Primer_学习笔记_第十九章(特殊工具和技术)
  18. Mysql时间函数用法
  19. 时间序列预测新范式——基于迁移学习的AdaRNN方法
  20. Apache Spark与Apache Drill

热门文章

  1. 操作系统的作用及类别
  2. 视频教程-HTML+CSS+JavaScript基础-HTML5/CSS
  3. 人工智能剥夺就业岗位?不妨听听马斯克是如何建议的
  4. Matlab的主成分分析
  5. html中怎样变英文月份,英语月份的巧记方法
  6. Java应用无响应、内存飙升、CPU飙升排查
  7. 计算机快捷键word,电脑中怎样自定义Word2010快捷键【图文教程】
  8. C语言程序确定闰月,怎样计算闰月
  9. 一次PHP网站木马查杀记录
  10. python如何绘制曲线图_Python matplotlib 如何绘制双Y轴曲线图?