跨域的徹底講解

什麼是跨域,爲何會跨域?vue

產生跨域的緣由,在前臺的接口,不在同一個域名下就會產生跨域。vue-cli

1.瀏覽器的限制,出於安全的考慮,產生跨域不會讓請求經過,可是後端是不會報錯的json

2.協議,域名,端口,任何一個不同都會產生跨域後端

3.請求是XHR請求,若是不是XHR請求,就算跨域,瀏覽器也不會報錯跨域

解決方案以下:瀏覽器

接口準備:http://m.kugou.com/?json=true  酷狗音樂的音樂列表接口安全

解決方案一:服務器

  使用JSONP,JSONP請求是動態的建立了script標籤來進行請求,後端也須要去進行改動,不然會當作是JSON處理,從而報錯,JSONP返回的ui

應該是一個JSurl

  JSONP請求的弊端:

    1.服務器須要進行同步改動

    2.JSONP只支持get請求方法

    3.發送的不是XHR請求 

解決方案二: 

  關於vue-cli 中請求代理的配置

 proxyTable: { "/proxy/": { target: "http://m.kugou.com", "secure": false, "changeOrigin": true, "pathRewrite": { "^/proxy": "" }, "headers": { "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Mobile Safari/537.36" } } },

  在項目的config/index.js中,dev裏面有個 proxyTable,在裏面寫上代理的詳細信息。

  /proxy/開頭的請求,都會使用target的域名進行請求,

  secure中 false 爲 http請求,true爲https請求

  changeOrigin 爲true 能夠進行跨域請求

  pathRewrite 的^/proxy 爲在地址後面拼接別的地址

  headersUser-Agent 爲 請求的UA,能夠寫手機的UA,這樣去模擬手機請求

  頁面請求方式 直接在url 中寫入 /proxy/rank/list?json=true
 
 
  持續更新中。。。
相關文章
相關標籤/搜索