中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么通過vue設置header

發布時間:2023-02-23 15:51:10 來源:億速云 閱讀:135 作者:iii 欄目:開發技術

本篇內容主要講解“怎么通過vue設置header”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么通過vue設置header”吧!

    vue設置header

    使用vue-resource與vue-cookie實現頁面登錄,數據存儲與后臺的數據交互

    后端交互對vue中contentType,和ajax的contentType區別對待

    this.$http
            .post(netUrl, change, {
              headers: {
                Authorization: "Bearer " + this.$cookies.get("token")
              }
            })
            .then(
              response => {
                console.log(response.data);
                if (response.data != null) {
                }
              },
              response => {
                console.log("error");
              }
            );

    服務器端需要設置contentType:“application/json”:

    如果采用的是傳統的$.ajax方式進行交互時設置contentType:"application/json;charset=UTF-8"也會導致服務器訪問不成功必須嚴格設置為contentType:“application/json”;

    怎么通過vue設置header

    當使用vue中的vue-resource方式交互時,即使不設置contentType:"application/json"也可成功交互;

    怎么通過vue設置header

    為什么ajax要求那么嚴格,原因還不是很清楚;
    但是我們可以通過以上方式:每個http請求中加入以下代碼,進行設置請求頭

     headers: {
        Authorization: "Bearer " + this.$cookies.get("token")
      }

    全局設置請求頭

    雖然上述方式可以成功的設置請求頭,但是每個請求都設置顯得繁瑣,而從網上查找解決方案始終沒有成功解決
    解決問題的主要思路:

    1.使得請求頭中存在token

    怎么通過vue設置header

    網上提供方式:

    Vue.http.interceptors.push((request, next) => {
          // ...
          // 請求發送前的處理邏輯
         request.beforeSend = function() {
                 request.headers['token'] = “token”;
         }
      next((response) => {
          // ...
          // 請求發送后的處理邏輯
          // ...
          // 根據請求的狀態,response參數會返回給successCallback或errorCallback
          return response
      })

    測試后發現用以上攔截器的方式不可行,查到網上有說可以嘗試

    request.headers.set('token', "Bearer ")

    方式,但是測試后發現仍行不通,通過各種嘗試最后發現是去除request.beforeSend直接設置皆可以

    Vue.http.interceptors.push((request, next) => {
      // 請求發送前的處理邏輯
      request.headers.set('token', "Bearer ")
      next((response) => {
        // 請求發送后的處理邏輯
        // 根據請求的狀態,response參數會返回給successCallback或errorCallback
        return response
      })
    })

    如何獲取真實的token,

    因為全局設置是在main.js中,而token是在登錄后才存儲下來的能否獲取到真實值
    1.確保你的token確實存在
    2.正常程序中通過this.$cookies.get(“token”)可以獲取token的值,因為對vue的認知不夠深,不知道在入口文件處如何獲取token值,通過多次測試獲取解決方案

    import Vue from 'vue'
    import VueCookies from 'vue-cookies'
    Vue.use(VueCookies);
    Vue.http.interceptors.push((request, next) => {
      // 請求發送前的處理邏輯
      request.headers.set('Authorization', "Bearer " + VueCookies.get("token"))
      next((response) => {
        // 請求發送后的處理邏輯
        // 根據請求的狀態,response參數會返回給successCallback或errorCallback
        return response
      })
    })

    擴展:vue 配置公共頭部(header)

    需求:整個項目;每個項目都有頭部 但是內容不一樣;這種情況我們可以考慮在app.vue中創建公共頭部;

    App.vue

    <template>
      	<div id="app">
    	    <div class="header" v-if="isShowHeader" id="headers">
                    <span class="title-info">
                            {{headerTitle}}
                     </span> 
    	     </div>
    	</div>
    </template>
    <script>
    import { mapState } from "vuex";
    import home from "../src/components/home";
     
    export default {
      name: "App",
      data() {
        return {
     
        };
      },
      computed: {
        // 存儲到store狀態管理中
        ...mapState({
          headerTitle: state => state.$vux.headerTitle,
        })
      },
     
    };
    </script>

    store.js

        import Vue from 'vue'
        import Vuex from 'vuex'
     
        Vue.use(Vuex)
        const store = new Vuex.Store({  })
        store.registerModule('$vux', { // 名字自己定義
            state: {//設置屬性
                headerTitle:'',
            },
            getters:{ // getters 用來獲取sate里面存儲的數據
     
            },
             mutations: {//更改屬性的狀態//返回來會有兩個狀態一個是上面的state,還有一個是返回來的狀態(形參),返回之后將我們請求回來的數據賦給state
                     getHeaderTitle(state, obj) {
                    state.headerTitle = obj.headerTitle
                },
            }
     
        export default store

    main.js

    //全局配置
    import Vue from "vue";
    import App from "./App";
    import router from "./router";
     
      store.commit("getHeaderTitle", { headerTitle: to.meta.title });

    router.js

    import Vue from 'vue'
    import Router from 'vue-router'
    Vue.use(Router)
     
    export default new Router({
      // mode: "history",
      linkActiveClass: "on",
         routes: [
            {
              path: "/business",
              name: "business",
              component: business,
              meta: {
                title: "粵警監管", // 添加該字段,表示進入這個路由是需要登錄的
                keepAlive: true
              }
            },
        ]
    })

    到此,相信大家對“怎么通過vue設置header”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    桃园县| 静宁县| 柏乡县| 迁西县| 长阳| 龙山县| 沙田区| 望谟县| 衡水市| 泰和县| 花垣县| 涪陵区| 瓮安县| 九寨沟县| 德兴市| 陕西省| 玛曲县| 迁安市| 乌什县| 安龙县| 安仁县| 扎囊县| 邵阳县| 瑞金市| 油尖旺区| 得荣县| 福清市| 马鞍山市| 连山| 合肥市| 龙海市| 泽普县| 光泽县| 宣汉县| 武川县| 寿宁县| 堆龙德庆县| 乌鲁木齐市| 和龙市| 略阳县| 福海县|