溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解決vue-cli開(kāi)發(fā)環(huán)境跨域的問(wèn)題

發(fā)布時(shí)間:2021-07-20 14:05:18 來(lái)源:億速云 閱讀:136 作者:小新 欄目:web開(kāi)發(fā)

小編給大家分享一下如何解決vue-cli開(kāi)發(fā)環(huán)境跨域的問(wèn)題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

前后端分離開(kāi)發(fā)中必要會(huì)遇到的問(wèn)題—跨域。在使用vue開(kāi)發(fā)的時(shí)候,開(kāi)始為了解決跨域問(wèn)題。采用的是CORS(Cross-origin resource sharing)。后臺(tái)在響應(yīng)頭中添加Access-Control-Allow-Origin。這樣就可以跨域調(diào)后臺(tái)接口了。

在前幾天無(wú)意中看到了config的index.js文件中有一個(gè)proxyTable屬性,通過(guò)配置可以解決開(kāi)發(fā)環(huán)境的跨域

開(kāi)發(fā)期間的API代理

當(dāng)將此樣板與現(xiàn)有后端集成時(shí),通常需要在使用dev服務(wù)器時(shí)訪問(wèn)后端API。為了實(shí)現(xiàn)這一點(diǎn),我們可以并行(或遠(yuǎn)程)運(yùn)行dev服務(wù)器和API后端,并讓dev服務(wù)器將所有API請(qǐng)求代理到實(shí)際的后端。

要配置代理規(guī)則,請(qǐng)?jiān)谄渲芯庉媎ev.proxyTable選項(xiàng)config/index.js。dev服務(wù)器正在使用http代理中間件進(jìn)行代理,因此您應(yīng)參考其文檔以獲取詳細(xì)的用法。但這是一個(gè)簡(jiǎn)單的例子:

// config/index.js
module.exports = {
 // ...
 dev: {
 proxyTable: {
  // proxy all requests starting with /api to jsonplaceholder
  '/api': {
  target: 'http://jsonplaceholder.typicode.com',
  changeOrigin: true,
  pathRewrite: { //需要rewrite重寫(xiě)的, 如果在服務(wù)器端做了處理則可以不要這段
   '^/api': ''
  }
  }
 }
 }
}

上面的示例將代理請(qǐng)求/api/posts/1到http://jsonplaceholder.typicode.com/posts/1。

如果

pathRewrite: { 
‘^/api': ‘a(chǎn)pi' 
},

則將代理請(qǐng)求/api/posts/1到http://jsonplaceholder.typicode.com/api/posts/1。

網(wǎng)址匹配

除了靜態(tài)網(wǎng)址之外,您還可以使用glob模式來(lái)匹配URL,例如/api/**。有關(guān)詳細(xì)信息,請(qǐng)參閱上下文匹配。此外,您可以提供一個(gè)filter可以是自定義函數(shù)的選項(xiàng),以確定請(qǐng)求是否應(yīng)被代理:

proxyTable: {
 '*': {
 target: 'http://jsonplaceholder.typicode.com',
 filter: function (pathname, req) {
  return pathname.match('^/api') && req.method === 'GET'
 }
 }
}

以上是“如何解決vue-cli開(kāi)發(fā)環(huán)境跨域的問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI