axios 跨域問題

方法一:裝插件

在谷歌瀏覽器中裝個插件,名字是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')

============================

最後,如果是做練習調的是別人的接口,用用戶代理處理就好。如果是自己寫的接口,在服務器端自己設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章