方法一:裝插件
在谷歌瀏覽器中裝個插件,名字是Allow CORS ,裝了之後就能夠拉取到數據了。但這不是根本上解決問題,只能說證明你的代碼沒問題,只是在跨域這裏遇到了麻煩而已。比如你換個瀏覽器,肯定程序又不能運行了。
方法二:遠程代理
就是利用別人寫好的代理接口,代理髮送你的請求,這樣就不會跨域了,使用如下
(1)首先我們定義一個常量 API_PROXY
const API_PROXY = 'https://bird.ioliu.cn/v1/?url='
(2)然後在axios
請求裏面和你的url拼接一下就OK了
axios.get(_this.$store.state.API_PROXY + 'http://news-at.zhihu.com/api/4/stories/latest')
方法三:nodejs代理
讓後端代碼設置一個 Access-Control-Allow-Origin 頭來解決,瀏覽器有安全策略限制,但是第三方的服務(服務器)沒有呀,所以我們可以通過讓瀏覽器訪問前端開發服務器的url,讓前端開發服務器去向後端服務器發送請求,再返回數據給瀏覽器,這樣子就不存在跨域問題啦。
打開config/index.js 修改proxyTable: {}
部分 修改爲
proxyTable: {
'/api': {
target: '正式網址/api/',
changeOrigin: true,
pathRewrite: {
'^/api': ' '
}
}
}
第一行的'/api'
指的是虛擬路徑 target指的是目標地址,也就是實際api的地址 pathRewrite規則重寫
然後在代碼頁面修改一下請求地址 axios.get('/api/xxx')
============================
最後,如果是做練習調的是別人的接口,用用戶代理處理就好。如果是自己寫的接口,在服務器端自己設置。