vue前端配置,實現跨域

2022-03-18 05:02:30 字數 2660 閱讀 2817

前言:

由於現在一般人家使用vue都是使用腳手架進行開發,而腳手架版本一般都是3.0以上的,所以對於我這種初學者來說,學習axios的時候,遇到的問題,網上的解決方案很多都是針對於腳手架2的老古董,所以對於像我這種小白,體驗不是很好。所以在此記錄一下。

正文:vue如何解決跨域。

解決跨域有兩種方法:

1:伺服器端設定跨域 ,若是使用express可以看看我的另一篇,express後端實現跨域處理

header(「access-control-allow-origin:*」);

header(「access-control-allow-headers:content-type」);

header(「access-control-request-method:get,post」);

2:可以自己設定乙個**伺服器,使用proxy。

總結:由於第一種方法需要你拿的是你自己伺服器的資料,才能對伺服器進行設定,所以這種方法廣泛性不是很好。

第二種方法,不管資料,提供api介面是自己的伺服器,還是使用第三方api介面都可以解決,所以本文介紹這種方法。

一.科普,為什麼網上一些方法解決不了我們的問題

網上大部分說的是在config裡面修改,但是在config資料夾下面進行修改是腳手架3以下的配置方法,因為腳手架3及以上,它的官方思想是0配置,它不建議你直接在config裡面修改,所以腳手架3把這個配置檔案隱藏的比較深,官方推薦我們採用擴充套件配置檔案的做法,而不是直接像腳手架3以下那樣直接修改配置檔案。

1.首先在你的vue專案裡新建乙個vue.config.js檔案,vue.config.js檔案用於擴充套件基礎配置,說白了就是像你玩遊戲一樣,你本來已經有鞋子這個裝備了,但是擴充套件它,你的鞋子能力會有大幅提公升。

2.在vue.config.js檔案**如下:

module.exports = 

},},

//2.配置跨域

devserver:}},

}}

實際上你要配置,實現跨域,只需要配置上面第2**部分,但是呢,我把其它配置也貼出來,只是想告訴你,這個檔案可以擴充套件多個功能不同的配置~ 

現在對上面的一些引數進行解釋說明,devserver是用於伺服器配置,proxy是**的意思,/api是你隨意起的名稱,作用是起到別名的作用,就是給你的target裡面的介面位址起別名。

這樣**配置已經寫好了。接下來可以請求資料了,這個時候「/api」這個別名就起到好處了。

(3)資料請求

你可以看一下我專案裡的網路請求的目錄,我把所有網路請求都放在乙個資料夾裡,實際上,你雖然可以在main.js裡面寫網路請求,但是這樣不利於網路請求的劃分與管理。

把所有網路請求都建立乙個js檔案,這樣更加見名知意。

首先request請求裡面統一你的request請求,不管是post方式還時get都可以封裝成不一樣的方法放在裡面,但是,預設axios,你沒有指明方法,它是get請求,這個你可以去看看官方的axios文件,這個非常有用,你使用人家的東西,不懂怎麼用,首先第一步不是去網上看看別人提供的方法,應該去網上看官方文件,官方文件可以解決你99%的疑問。

廢話不多說,上我的request.js的**。

import axios from 'axios'

export function request(config))

//2.應用場景:伺服器返回資料後進行處理,攔截不需要的垃圾資料,我這裡沒有攔截,只是把拿到的res結果繼續返回出去,實際上如果你的res裡面你只想拿到它的data,你可以直接return res.data

//這樣你就達到過濾res的其它資料的目的

instance.interceptors.response.use(res => ,err => )

//3.傳送網路請求

return instance(config)

}

home.js的**,這裡的home.js拿到的資料只給home頁面使用,而且你可以直接匯入request裡你定義的方法,達到復用request裡面定義方法的目的,這樣你不用每次發乙個get或者post請求都去再定義乙個request方法。

import  from './request'

// 請求歷史上的今天資料

export function gethistorytoday())

}

最後在你要使用這個網路請求的元件匯入這home.js的方法

(4)網路請求匯入元件

下面直接貼**

import  from 'network/home'

注意:上面這個的大括號不能省略,在vue中,由於這裡的gethistorytoday函式是直接export的所以你必須以{}方式引入,如果是以export default方式匯出的,你就可以給它起別名。

這樣引入 import gettoday from ''network/home"

(5)瀏覽器正確列印資料

vue 前端設定允許跨域 Vue前端處理跨域

之前的跨域都是後台來解決,因為前端方便的解決方式只有jsonp,但是jsonp只能用於get請求,所以最好的方式只能是後台了 但現在不行了,後台讓前端解決,原因是後期 部署後就不會存在跨域問題了,後台不解決 那就前端唄。1 在config index.js檔案下,由於只有開發環境才會遇到跨域問題,所...

vue實現跨域

在請求的資源上沒有 訪問控制允許源 標頭。因此,http loalhoal 8081 是不允許訪問的。出現這個報錯就說明,瀏覽器限制了跨域,需要設定跨域 一 後台更改header header access control allow origin 允許所有 訪問 header access con...

django vue實現跨域 前端跨域和後端跨域

pip install django cors headers django.contrib.admin django.contrib.auth django.contrib.contenttypes django.contrib.sessions django.contrib.messages d...