1. 程式人生 > >用Vue來實現音樂播放器(九):歌單數據接口分析

用Vue來實現音樂播放器(九):歌單數據接口分析

QQ 插件 但是 之間 nbsp 跨域問題 前端 代理服務 一點

技術分享圖片

z這裏如果我們和之前獲取輪播圖的數據一樣來獲取表單的數據 發現根本獲取不到

技術分享圖片

技術分享圖片

原因是qq音樂在請求頭裏面加了authority和refer等 但是如果我們通過jsonp實現跨域來請求數據的話 是根本不能夠修改請求頭的 所以我們就考慮用axios 但是axios又不能進行跨域 那麽我們要怎麽拿到qq音樂的服務器的數據呢??其實是有辦法解決的:我們可以進行後端接口代理 那麽什麽是後端代理呢??

如果要使用axios直接進行跨域訪問是不可以的,這是就需要配置代理了,為什麽要配置代理呢?

原因就是客戶端請求服務端的數據是存在跨域問題的,而服務器和服務器之間可以相互請求數據,是沒有跨域的概念(如果服務器沒有設置禁止跨域的權限問題),也就是說,我們可以配置一個代理的服務器可以請求另一個服務器中的數據,然後把請求出來的數據返回到我們的代理服務器中,代理服務器再返回數據給我們的客戶端,這樣我們就可以實現跨域訪問數據啦。

如果不理解可以看依據看下圖

技術分享圖片

接下來手動代理後端服務器

技術分享圖片

技術分享圖片

在手動代理後端服務器完畢之後就來寫前端請求

技術分享圖片

技術分享圖片

成功拿到數據

技術分享圖片

技術分享圖片

有一點要註意:axios並不是vue的插件 所以我們不能直接使用use方法 所以我們要將他添加到vue的原型鏈中使用

import axios from ‘axios‘;

Vue.prototype.$http = axios;

這樣我們就可以直接使用了,

註意點:1.webpack的跨域解決方法只是是適合在開發環境中使用,

    2.設置inde.js內部的dev時,請註意,需要設置的應該是域名,過多會失效,所以應該是www。baidu。com

    3.使用axios上傳文件,不需要像ajax上傳圖片一樣使用formdata

用Vue來實現音樂播放器(九):歌單數據接口分析