當我們在使用Vue進行開發的時候,常常會遇到跨域的問題??缬蚴侵冈跒g覽器中,一個域下的文檔或腳本試圖訪問另一個域下的資源。Vue可以通過Vue-Resource或Axios等插件解決跨域問題,但是在Vuex中,我們需要搭建一個專門的代理服務器來解決跨域問題。
第一步是安裝cors插件。cors是一個node.js的包,可以用來解決跨域問題。在終端中輸入以下命令:
npm install cors --save
第二步是在服務器文件中引入cors,并在app.use中調用:
const express = require('express') const app = express() const cors = require('cors') app.use(cors()) //...
第三步是在Vuex的actions中,使用Vue-Resource或Axios進行異步請求:
import Vue from 'vue' import VueResource from 'vue-resource' Vue.use(VueResource) const actions = { getData ({commit}) { Vue.http.get('http://localhost:3000/api') .then(response =>{ commit('SET_DATA', response.body) }) .catch(error =>{ console.log(error.message) }) } }
第四步是在服務器文件中,創建與Vue-Resource或Axios異步請求的路由:
const express = require('express') const app = express() const cors = require('cors') const router = express.Router() app.use(cors()) router.get('/api', function (req, res) { res.send({ data: 'hello world' }) }) app.use('/', router) app.listen(3000, function() { console.log('server is running on port 3000') })
第五步是在Vue的組件中,調用actions:
import { mapActions } from 'vuex' export default { methods: { ...mapActions([ 'getData' ]) }, created () { this.getData() } }
通過以上五步,我們就可以在Vuex中成功解決跨域問題。當然,如果您不想搭建一個專門的代理服務器,也可以使用一些在線的代理服務器來解決跨域問題。但是如果您想更好地掌控自己的項目,建議按照以上五步進行操作。
下一篇vue 實現pdf下載