新版vue-cli模板下本地開發(fā)環(huán)境使用node服務(wù)器跨域的方法
背景
我們都知道瀏覽器有一個(gè)既核心也最基本的安全功能,即同源策略。同源分別是:協(xié)議,域名,端口。如果瀏覽器訪問服務(wù)器不同源的話,就會(huì)訪問不到數(shù)據(jù)。那開發(fā)中常常訪問的服務(wù)器不同源,那么可以借助一個(gè)服務(wù)器當(dāng)做中介來訪問需要訪問的服務(wù)器從而獲得數(shù)據(jù)。因?yàn)橥床呗允菫g覽器的安全機(jī)制,而服務(wù)器之間是不受此限制的。之前vue-cli模板build文件夾下有dev-serve.js文件,可以在此文件中配置本地node服務(wù)器實(shí)現(xiàn)跨域,現(xiàn)在的模板下沒有此文件,那我們?cè)撊绾问褂胣ode跨域呢?不逼逼,上方法。
具體操作
1、在build文件夾下面新建一個(gè)dev-serve.js文件,其中添加代碼如下:
'use strict'
const express = require('express')
const axios = require('axios')
module.exports = function () {
let app = express()
app.get('/api/getDiscList', (req, res) => {
let url = '請(qǐng)求地址'
axios.get(url, {
headers: {
//這里請(qǐng)求的是QQ音樂的接口,帶上下面參數(shù)是為了騙服務(wù)器是自己人
referer: 'https://c.y.qq.com/',
host: 'c.y.qq.com'
},
params: req.query
}).then((response) => {
res.json(response.data)
}).catch((e) => {
console.log(e)
})
})
app.listen(3000)
}
2、在build.js中引入并且運(yùn)行只需要在最上面添加 require('./dev-serve.js')()
當(dāng)我們npm run dev運(yùn)行項(xiàng)目的時(shí)候,node服務(wù)器就會(huì)啟動(dòng)自動(dòng)監(jiān)聽3000端口
3.本地發(fā)送ajax請(qǐng)求,就可以通過node服務(wù)器訪問到數(shù)據(jù),請(qǐng)求我使用的是axios。請(qǐng)求如下:
import axios from 'axios'
function getDiscList() {
const data = {
//...請(qǐng)求參數(shù)
}
return axios.get('/api/getDiscList', {
params: data
}).then(res => {
return Promise.resolve(res.data)
})
}
請(qǐng)求到數(shù)據(jù)如下:


結(jié)語
如此就簡單實(shí)現(xiàn)了本地node服務(wù)器跨域,在開發(fā)環(huán)境下是可以請(qǐng)求到數(shù)據(jù),但是npm run build 打包成靜態(tài)文件后就失效了。路還很長,還請(qǐng)各位不吝賜教。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解vuejs中執(zhí)行npm run dev出現(xiàn)頁面cannot GET/問題
這篇文章主要介紹了詳解vuejs中執(zhí)行npm run dev出現(xiàn)頁面cannot GET/問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
uniapp Vue3中如何解決web/H5網(wǎng)頁瀏覽器跨域的問題
存在跨域問題的原因是因?yàn)闉g覽器的同源策略,也就是說前端無法直接發(fā)起跨域請(qǐng)求,同源策略是一個(gè)基礎(chǔ)的安全策略,但是這也會(huì)給uniapp/Vue開發(fā)者在部署時(shí)帶來一定的麻煩,這篇文章主要介紹了在uniapp Vue3版本中如何解決web/H5網(wǎng)頁瀏覽器跨域的問題,需要的朋友可以參考下2024-06-06
vue3組件的v-model:value與v-model的區(qū)別解析
在Vue3中,v-model和v-model:value都是用于實(shí)現(xiàn)雙向數(shù)據(jù)綁定的語法糖,但v-model:value提供了更顯式和靈活的綁定方式,允許你明確指定綁定的屬性名和事件名,它們的主要區(qū)別在于默認(rèn)行為、靈活性、多模型綁定和使用場景,感興趣的朋友一起看看吧2025-02-02
vue項(xiàng)目本地開發(fā)使用Nginx配置代理后端接口問題
這篇文章主要介紹了vue項(xiàng)目本地開發(fā)使用Nginx配置代理后端接口問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
vue中provide?inject的響應(yīng)式監(jiān)聽解決方案
這篇文章主要介紹了vue中provide?inject的響應(yīng)式監(jiān)聽解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
Vue3父子組件傳參有關(guān)sync修飾符的用法詳解
這篇文章主要給大家介紹關(guān)于前端Vue3父子組件傳參有關(guān)sync修飾符的用法詳細(xì)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09

