日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

隨著前端技術(shù)的不斷發(fā)展和普及,Vue作為其中的一員受到越來越多的關(guān)注和應(yīng)用。在Vue項(xiàng)目開發(fā)中,經(jīng)常會(huì)遇到跨域請求的問題,這時(shí)候如何處理才能讓項(xiàng)目正常運(yùn)行呢?本文將結(jié)合個(gè)人經(jīng)驗(yàn)分享一些Vue項(xiàng)目開發(fā)中的跨域請求處理經(jīng)驗(yàn)。

首先,什么是跨域請求?簡單來說,就是一個(gè)域名下的網(wǎng)頁無法訪問另一個(gè)域名下的資源。具體體現(xiàn)在前后端分離的情況下,前端應(yīng)用(例如Vue應(yīng)用)向后端API發(fā)起請求時(shí),由于兩者處于不同的域名下,會(huì)受到瀏覽器的同源策略限制而無法正常訪問。這時(shí)候,就需要使用一些手段來處理跨域請求。

一、使用代理

常見的處理跨域請求的方法之一是使用代理。即在Vue應(yīng)用的配置文件中設(shè)置代理服務(wù)器地址,先向代理服務(wù)器發(fā)起請求,再由代理服務(wù)器轉(zhuǎn)發(fā)給后端API。這樣,前端應(yīng)用就可以正常請求后端API的數(shù)據(jù)了。在Vue項(xiàng)目中,可以在vue.config.js中進(jìn)行如下設(shè)置:

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
        pathRewrite: {
          '/api': '/'
        }
      }
    }
  }
}

登錄后復(fù)制

其中,target參數(shù)指向后端API的地址,changeOrigin指示是否修改請求頭中的Origin屬性,pathRewrite用于重寫請求路徑,將以/api開頭的路徑替換成以/開頭的路徑。

二、使用JSONP

JSONP(JSON with Padding)是一種借助<script>標(biāo)簽的GET請求實(shí)現(xiàn)跨域請求的方法。具體實(shí)現(xiàn)是,在前端應(yīng)用中創(chuàng)建一個(gè)<script>標(biāo)簽,將請求的URL設(shè)置為后端API的URL,并在URL中傳遞一個(gè)回調(diào)函數(shù)名,后端API在返回?cái)?shù)據(jù)時(shí),將數(shù)據(jù)包裹在該回調(diào)函數(shù)名的函數(shù)調(diào)用中返回,前端應(yīng)用便可以通過該回調(diào)函數(shù)名獲取數(shù)據(jù)了。在Vue項(xiàng)目中,可以通過如下方式實(shí)現(xiàn)JSONP請求:

export function jsonp (url, data, callback) {
  let script = document.createElement('script')
  let params = ''
  for (let key in data) {
    params += `${key}=${data[key]}&`
  }
  url += '?' + params
  script.src = url + 'callback=' + callback
  document.body.appendChild(script)
  // 移除script標(biāo)簽
  script.onload = function () {
    document.body.removeChild(script)
  }
}

登錄后復(fù)制

其中,url參數(shù)為后端API的地址,data參數(shù)為請求參數(shù),callback參數(shù)為回調(diào)函數(shù)名。該方法通過創(chuàng)建一個(gè)<script>標(biāo)簽的方式發(fā)起GET請求,并將請求結(jié)果作為函數(shù)調(diào)用返回給回調(diào)函數(shù)。

三、使用CORS

CORS(Cross-Origin Resource Sharing)是一種標(biāo)準(zhǔn)的跨域請求解決方案,主要涉及瀏覽器和服務(wù)器之間的交互。通過在服務(wù)器端配置響應(yīng)頭中的Access-Control-Allow-Origin屬性,可以允許前端應(yīng)用跨域訪問后端API。在Vue項(xiàng)目中,可以設(shè)置XHR請求的withCredentials屬性為true,發(fā)起CORS請求。具體實(shí)現(xiàn)如下:

export function xhr (method, url, data, headers) {
  return new Promise((resolve, reject) => {
    let xhr = new XMLHttpRequest()
    xhr.withCredentials = true
    xhr.onreadystatechange = function () {
      if (xhr.readyState === 4) {
        if (xhr.status === 200) {
          resolve(JSON.parse(xhr.responseText))
        } else {
          reject(xhr.statusText)
        }
      }
    }
    xhr.open(method, url, true)
    for (let key in headers) {
      xhr.setRequestHeader(key, headers[key])
    }
    xhr.send(data)
  })
}

登錄后復(fù)制

其中,method參數(shù)為請求方法,url參數(shù)為請求地址,data參數(shù)為請求參數(shù),headers參數(shù)為請求頭。該方法通過創(chuàng)建一個(gè)XMLHttpRequest對象,設(shè)置其withCredentials屬性為true,發(fā)起XHR請求,并在響應(yīng)完成后返回Promise結(jié)果。

綜上,通過使用代理、JSONP和CORS這三種方式處理跨域請求,可以讓Vue項(xiàng)目正常進(jìn)行前后端數(shù)據(jù)交互,提高開發(fā)效率和用戶體驗(yàn)。在具體應(yīng)用中,可以根據(jù)項(xiàng)目需求和后端API接口的情況選擇合適的方式進(jìn)行處理。

分享到:
標(biāo)簽:分享 開發(fā) 經(jīng)驗(yàn) 請求 項(xiàng)目
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評(píng)定2018-06-03

通用課目體育訓(xùn)練成績評(píng)定