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

溫馨提示×

溫馨提示×

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

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

vue?proxyTable的跨域中pathRewrite怎么配置

發布時間:2022-04-11 11:10:31 來源:億速云 閱讀:670 作者:iii 欄目:開發技術

這篇文章主要介紹了vue proxyTable的跨域中pathRewrite怎么配置的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇vue proxyTable的跨域中pathRewrite怎么配置文章都會有所收獲,下面我們一起來看看吧。

    vue瀏覽器跨域問題和vue proxyTable跨域中pathRewrite配置

    vue瀏覽器跨域問題

    當瀏覽器報如下錯誤時,則說明請求跨域了。

    localhost/:1 Failed to load http://www.thenewstep.cn/test/testToken.php: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:8080’ is therefore not allowed access. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.

    為什么會跨域

    因為瀏覽器同源策略的限制,不是同源的腳本不能操作其他源下面的對象。

    什么是同源策略

    同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。

    可以說Web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現。

    簡單的來說:協議、IP、端口三者都相同,則為同源

    解決辦法

    跨域的解決辦法有很多,比如script標簽 、jsonp、后端設置cros等等…,但是我這里講的是webpack配置vue 的 proxyTable解決跨域。

    pathRewrite

    簡單來說,pathRewrite是使用proxy進行代理時,對請求路徑進行重定向以匹配到正確的請求地址,

    dev: {
        // Paths
        assetsSubDirectory: 'static',
        assetsPublicPath: '/',
        proxyTable: {
          '/api': {
            target: 'http://XX.XX.XX.XX:8083',
            changeOrigin: true,
            pathRewrite: {
              '^/api': '/api'   // 這種接口配置出來     http://XX.XX.XX.XX:8083/api/login
              //'^/api': '/' 這種接口配置出來     http://XX.XX.XX.XX:8083/login
            }
          }
        }
      },

    如何不配置pathRewrite 請求就被轉發到 http://XX.XX.XX.XX:8083 并把相應uri帶上。

    比如:localhost:8080/api/xxx 會被轉發到http://XX.XX.XX.XX:8083/api/xxx

    配置完成后需要重新編譯一遍 , 調用接口的時候

            // 獲取菜單權限
          getPermission(){
            this.$ajaxget({
              url: '/api/getPermission',
              data: {},
              isLayer: true,
              successFc: data => {
                console.log(data.data)
              }
            })

    2種數據請求方式: fecth和axios

    1、fetch方式

    在需要請求的頁面,只需要這樣寫(/apis+具體請求參數),如下:

    fetch("/apis/test/testToken.php", {
          method: "POST",
          headers: {
            "Content-type": "application/json",
            token: "f4c902c9ae5a2a9d8f84868ad064e706"
          },
          body: JSON.stringify(data)
        })
          .then(res => res.json())
          .then(data => {
            console.log(data);
          });

    2、axios方式

    main.js代碼

    import Vue from 'vue'
    import App from './App'
    import axios from 'axios'
    Vue.config.productionTip = false
    Vue.prototype.$axios = axios //將axios掛載在Vue實例原型上
    // 設置axios請求的token
    axios.defaults.headers.common['token'] = 'f4c902c9ae5a2a9d8f84868ad064e706'
    //設置請求頭
    axios.defaults.headers.post["Content-type"] = "application/json"

    axios請求頁面代碼

    this.$axios.post('/apis/test/testToken.php',data).then(res=>{
            console.log(res)
    })

    代理配置proxy下pathrewrite失效踩坑

    從網上直接找到的代碼復制過來報錯,最后找了一下午為什么失效,最后發現問題直接破防了

    錯誤:

    pathRewrite: { 
      "  ^/api  "  : "" //若請求的路徑在目標url下但不在/api 下,則將其轉換成空
      },

    正確:

    pathRewrite: { 
      "^/api": "" //若請求的路徑在目標url下但不在/api 下,則將其轉換成空
       },

    原因:

    直接復制過來的 "  ^/api  "  : ""里面多了兩個空格,判斷url的時候就獲取不到/api,刪除空格就解決問題了

    關于“vue proxyTable的跨域中pathRewrite怎么配置”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“vue proxyTable的跨域中pathRewrite怎么配置”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

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

    AI

    庆阳市| 无棣县| 溆浦县| 织金县| 仁布县| 厦门市| 呼伦贝尔市| 大足县| 新营市| 建始县| 鹤庆县| 满城县| 若尔盖县| 闽侯县| 桐梓县| 河东区| 赣榆县| 雷波县| 大厂| 喀什市| 广灵县| 嵊州市| 七台河市| 开封市| 利津县| 厦门市| 盐山县| 娱乐| 阆中市| 遂溪县| 农安县| 子洲县| 长沙市| 体育| 英山县| 台南县| 宝山区| 乐业县| 宁河县| 美姑县| 石河子市|