更新時間:2022年02月23日 10:41:56 作者:南獨酌酒nvn
VUE訪問接口的時候,很可能出現(xiàn)跨域請求,從而被提供接口的服務(wù)器拒絕,下面這篇文章主要給大家介紹了關(guān)于Vue如何解決跨域問題的相關(guān)資料,需要的朋友可以參考下
什么是跨域
跨域指瀏覽器不允許當前頁面的所在的源去請求另一個源的數(shù)據(jù)。源指協(xié)議,端口,域名。只要這個3個中有一個不同就是跨域。 這里列舉一個經(jīng)典的列子:
#協(xié)議跨域 http://a.baidu.com訪問https://a.baidu.com; #端口跨域 http://a.baidu.com:8080訪問http://a.baidu.com:80; #域名跨域 http://a.baidu.com訪問http://b.baidu.com;
通常在不同服務(wù)器訪問過程中可能會遇到跨域問題,也就是口頭上常說的策略同源問題 CORS
出現(xiàn)跨越一般就是判斷三個地方,http協(xié)議,請求地址,端口號,三者若有一處不相同,那么就會出現(xiàn)跨域,解決這個問題就要配置一個代理服務(wù)器,通過代理服務(wù)器實現(xiàn)跨域請求
解決跨域的情況一般就是如下圖:
Vue 中配置跨域的配置在 vue.config.js 文件中添加:
配置一個的寫法
1 2 3 4 5 | module.exports = {
devServer: {
proxy: 'http://localhost:5000' // 配置訪問的服務(wù)器地址
}
}
|
配置多個的寫法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | module.exports = {
devServer: {
proxy: {
'/api' : {
target: 'http://localhost:5000' , // 配置訪問的服務(wù)器地址
pathRewrite: { '^/api' : '' }, // 用于將請求中的 /api 字符串替換為空, 然后訪問地址就能正確訪問,若不添加此行配置,那么訪問地址就變成了: http://localhost:5000/api/request_url,這樣的請求就會出現(xiàn) 404 操作
ws: true , // 是否支持 webstocket, 默認是 true
changeOrigin: true // 用于控制請求頭中的 host 值, 默認是 ture
},
'/api2' : {
target: 'http://localhost:6000' , // 配置訪問的服務(wù)器地址
pathRewrite: { '^/api2' : '' }, // 用于將請求中的 /api2 字符串替換為空, 然后訪問地址就能正確訪問,若不添加此行配置,那么訪問地址就變成了: http://localhost:6000/api/request_url,這樣的請求就會出現(xiàn) 404 操作
ws: true , // 是否支持 webstocket, 默認是 true
changeOrigin: true // 用于控制請求頭中的 host 值, 默認是 ture
}
}
}
}
|
添加完代理服務(wù)器的相關(guān)配置,就需要通過 ajax 請求訪問服務(wù)器了,一般 vue 中使用的都是 axios 庫,這里就以 axios 庫為例子:
安裝 axios
使用 axios
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // 引入 axios 庫
import axios from 'axios'
export default {
name: 'Student' , // 組件名稱
// 組件使用的方法
methods: {
注釋內(nèi)容 `:get 請求訪問 /api 前綴開頭的地址,實際上訪問的地址是: http: //localhost:5000/request_url`
test1() {
axios.get( 'http://localhost:8080/api/request_url' ).then(res => {
console.log(res.data); // 輸出請求響應(yīng)值內(nèi)容
});
},
注釋內(nèi)容 :`get 請求訪問 /api2 前端開頭的地址,實際上訪問的地址是:http: //localhost:6000/request_url`
test2() {
axios.get( 'http://localhost:8080/api2/request_url' ).then(res => {
console.log(res.data); // 輸出請求響應(yīng)值內(nèi)容
})
}
}
}
|
總結(jié)
到此這篇關(guān)于Vue如何解決跨域問題的文章就介紹到這了,更多相關(guān)Vue解決跨域問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
|