亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue在響應(yīng)頭response中獲取自定義headers操作

 更新時(shí)間:2020年07月24日 11:05:56   作者:codezha  
這篇文章主要介紹了vue在響應(yīng)頭response中獲取自定義headers操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

日常開發(fā),我們可能會(huì)為了安全問(wèn)題,保證第三方無(wú)法通過(guò)偽造返回報(bào)文欺騙前端,需要在返回報(bào)文中添加自定義參數(shù),用于驗(yàn)證身份,后端添加自定義參數(shù),前端校驗(yàn)自定義參數(shù)通過(guò)后才會(huì)執(zhí)行相應(yīng)的操作。

系統(tǒng)為了安全會(huì)去掉自定義頭,如果不做任何處理,前端無(wú)法通過(guò)javascript訪問(wèn)自定義頭,所以需要在接口返回中添加這樣的操作。

response['Cookie'] ='13231231231' #自定義頭

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

控制臺(tái)打印headers信息如以下截圖:

要正確打印需要在接口返回中設(shè)置以下信息:

response['Access-Control-Expose-Headers'] = "Cookie" #Cookie為自定義頭的key

設(shè)置完后,打印截圖如下:

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);
      //校驗(yàn)自定義headers,通過(guò)則進(jìn)行下一步操作
     } else {
      this.$Message.error("失敗");
     }
   } else {
     this.$Message.error(res.data.returnMessage);
   }
 }).catch(function(error) {
   console.log(error);
 });

按照上面的操作,就可以解決欺騙前端的安全問(wèn)題。

補(bǔ)充知識(shí):vue前端利用localStorage存儲(chǔ)token值并放到請(qǐng)求頭headers實(shí)例

之前在關(guān)于登錄接口的一篇博客里,我有提到過(guò)token,在這篇博客里我會(huì)介紹token在前端如何存取,同時(shí)把它放在請(qǐng)求頭里獲取數(shù)據(jù)。

1、關(guān)于token

為什么要用Token:

Token是在客戶端頻繁向服務(wù)端請(qǐng)求數(shù)據(jù),服務(wù)端頻繁的去數(shù)據(jù)庫(kù)查詢用戶名和密碼并進(jìn)行對(duì)比,判斷用戶名和密碼正確與否,并作出相應(yīng)提示,在這樣的背景下,Token便應(yīng)運(yùn)而生。

Token的定義:

Token是服務(wù)端生成的一串字符串,以作客戶端進(jìn)行請(qǐng)求的一個(gè)令牌,當(dāng)?shù)谝淮蔚卿浐?,服?wù)器生成一個(gè)Token便將此Token返回給客戶端,以后客戶端只需帶上這個(gè)Token前來(lái)請(qǐng)求數(shù)據(jù)即可,無(wú)需再次帶上用戶名和密碼。

使用Token的目的:

Token的目的是為了減輕服務(wù)器的壓力,減少頻繁的查詢數(shù)據(jù)庫(kù),使服務(wù)器更加健壯。

Token 的優(yōu)點(diǎn):

擴(kuò)展性更強(qiáng),也更安全點(diǎn),非常適合用在 Web 應(yīng)用或者移動(dòng)應(yīng)用上。Token 的中文有人翻譯成 “令牌”,我覺得挺好,意思就是,你拿著這個(gè)令牌,才能過(guò)一些關(guān)卡。

2、token使用要達(dá)到的效果

首先來(lái)看后端給的接口文檔,在關(guān)于登錄和登出這兩個(gè)接口里面,后端說(shuō)他會(huì)給你一個(gè)token值,然后呢你要根據(jù)這個(gè)token獲取用戶的信息,比如用戶名、用戶訂單、用戶收藏啥啥啥的。

接著我們?cè)趐ostman里面試一試,有了這個(gè)token值后臺(tái)會(huì)返回什么數(shù)據(jù)。由于一通百通這里我們就只看登錄頁(yè)面。看下圖,返回給我們的是用戶的一些基本信息。

注意點(diǎn)來(lái)了!這個(gè)token值我們是在登錄也就是login.vue這個(gè)頁(yè)面從后端獲得的。但是我們利用這個(gè)token值獲取用戶信息是在另一個(gè)頁(yè)面,看下面兩張圖我們可能更能理解:

也就是說(shuō)我們?cè)诘卿涰?yè)面獲取token,在“我的”頁(yè)面通過(guò)token請(qǐng)求用戶名放到對(duì)應(yīng)位置。

3、利用localStorage存取token實(shí)例

登錄按鈕的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=>{          //請(qǐng)求成功后執(zhí)行函數(shù)
    if(res.data.code === 0){
     //利用localstorage存儲(chǔ)到本地
     localStorage.setItem("token",res.data.data.token)
     this.$router.push('/me') //登錄驗(yàn)證成功路由實(shí)現(xiàn)跳轉(zhuǎn)
     console.log("登錄成功")
    }else{
     console.log("登錄失敗")
    }
   })
   .catch(err=>{          //請(qǐng)求錯(cuò)誤后執(zhí)行函
    console.log("請(qǐng)求錯(cuò)誤")
   })
  },

在這個(gè)登錄頁(yè)面我們主要是通過(guò)localstorage來(lái)把token值存到本地。

核心代碼:

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

//表示把res.data.data.token這個(gè)value存儲(chǔ)到本地的“token”這個(gè)key里面

這里的res.data.data.token,一定要注意是否有兩個(gè)data。從下圖可以看到,res.data是指返回的所有數(shù)據(jù),因此再有一個(gè)data表示data里邊的數(shù)據(jù),token就在里邊了。

- me.vue頁(yè)面取出token值并請(qǐng)求用戶名js代碼:

export default {
  data: function () {
      return {
       name:'',
       token:''
      }
  },
  
  created(){
   //頁(yè)面加載時(shí)就從本地通過(guò)localstorage獲取存儲(chǔ)的token值
    this.token = localStorage.getItem('token')
  },
   mounted() {
    this.$axios({
     method: 'get',
     url: '/api/v1/user',
     headers: {
       'Content-Type': "application/json;charset=UTF-8",
       //把token放到請(qǐng)求頭才能請(qǐng)求,這里的'Bearer '表示是后臺(tái)希望更加的安全,依據(jù)后臺(tái)給的信息看到底是加還是不加
       'Authorization': 'Bearer ' + this.token,
     }
    })
    .then(res=>{          //請(qǐng)求成功后執(zhí)行函數(shù)
    if(res.data.code === 0){
     //請(qǐng)求成功之后給用戶名賦值
     this.name=res.data.data.username
     console.log("登錄成功")
    }else{
     console.log("登錄失敗")
    }
   })
   .catch(err=>{          //請(qǐng)求錯(cuò)誤后執(zhí)行函
    console.log("請(qǐng)求錯(cuò)誤")
   })
    },
}

這邊同理,直接用localstorage取出就好了。

核心代碼:

created(){
   //頁(yè)面加載時(shí)就從本地通過(guò)localstorage獲取存儲(chǔ)的token值
    this.token = localStorage.getItem('token')
  },

之后在其他的頁(yè)面如果還需要把token放到請(qǐng)求頭,還是直接通過(guò)localstorage的getitem就可以取出了,即localStorage.getItem('token')。

以上這篇vue在響應(yīng)頭response中獲取自定義headers操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue自定義Form組件實(shí)現(xiàn)方法介紹

    Vue自定義Form組件實(shí)現(xiàn)方法介紹

    這篇文章主要介紹了Vue自定義Form組件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • vue.js實(shí)例todoList項(xiàng)目

    vue.js實(shí)例todoList項(xiàng)目

    本篇文章主要介紹了vue.js實(shí)例todoList項(xiàng)目,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Vue 前端導(dǎo)出后端返回的excel文件方式

    Vue 前端導(dǎo)出后端返回的excel文件方式

    這篇文章主要介紹了Vue 前端導(dǎo)出后端返回的excel文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue-cli創(chuàng)建項(xiàng)目ERROR?in?Conflict:?Multiple?assets?emit?different?content?to?the?same?filename?index.html問(wèn)題的解決辦法

    vue-cli創(chuàng)建項(xiàng)目ERROR?in?Conflict:?Multiple?assets?emit?dif

    最近vue/cli創(chuàng)建項(xiàng)目后出現(xiàn)了錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于vue-cli創(chuàng)建項(xiàng)目ERROR?in?Conflict:?Multiple?assets?emit?different?content?to?the?same?filename?index.html問(wèn)題的解決辦法,需要的朋友可以參考下
    2023-02-02
  • Vue自定義模態(tài)對(duì)話框彈窗

    Vue自定義模態(tài)對(duì)話框彈窗

    這篇文章主要為大家詳細(xì)介紹了Vue自定義模態(tài)對(duì)話框彈窗,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Vue.js快速入門實(shí)例教程

    Vue.js快速入門實(shí)例教程

    vue是法語(yǔ)中視圖的意思,Vue.js是一個(gè)輕巧、高性能、可組件化的MVVM庫(kù),同時(shí)擁有非常容易上手的API。這篇文章主要介紹了Vue.js快速入門實(shí)例教程的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • vue2如何使用face-api.js實(shí)現(xiàn)人臉識(shí)別功能

    vue2如何使用face-api.js實(shí)現(xiàn)人臉識(shí)別功能

    本文介紹了如何在Vue.js項(xiàng)目中利用face-api.js實(shí)現(xiàn)人臉識(shí)別功能,首先需要安裝Vue.js和face-api.js以及其依賴TensorFlow.js,接著,下載并配置必要的模型文件到項(xiàng)目目錄,之后,將人臉識(shí)別功能封裝成Vue組件,并在組件中通過(guò)視頻流進(jìn)行人臉檢測(cè)和結(jié)果展示
    2024-09-09
  • bootstrap vue.js實(shí)現(xiàn)tab效果

    bootstrap vue.js實(shí)現(xiàn)tab效果

    這篇文章主要為大家詳細(xì)介紹了bootstrap vue.js實(shí)現(xiàn)tab效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • vue模塊拖拽實(shí)現(xiàn)示例代碼

    vue模塊拖拽實(shí)現(xiàn)示例代碼

    這篇文章主要介紹了vue模塊拖拽實(shí)現(xiàn)示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Nginx部署前端Vue項(xiàng)目的步驟、常見問(wèn)題與解決方案

    Nginx部署前端Vue項(xiàng)目的步驟、常見問(wèn)題與解決方案

    在現(xiàn)代Web開發(fā)中,Vue.js成為前端開發(fā)者構(gòu)建單頁(yè)應(yīng)用的熱門框架,Nginx以其高性能和穩(wěn)定性,成為部署Vue項(xiàng)目的理想選擇,這篇文章主要介紹了Nginx部署前端Vue項(xiàng)目的步驟、常見問(wèn)題與解決方案,需要的朋友可以參考下
    2024-09-09

最新評(píng)論