淺談 Vue 的跨域問題

Vue 跨域問題

今天一個小老弟在那問我子姜,哥給我看看代碼洗做,接口都測試通過了梳虽,怎么前端拿不到后端的數(shù)據(jù)址芯,控制臺老是報這個錯誤“Access-Control-Allow-Origin”。這就是跨域的問題窜觉。

出現(xiàn)跨域問題的原因

由于瀏覽器的同源策略導致谷炸,是瀏覽器對 javascript 施加的安全機制。通俗的講就是兩個不在同一個域名端口上的項目禀挫,在想獲取資源時旬陡,一方對另一方施加訪問的限制。

這里拿aaa.com域名來舉例特咆,aaa.com對應的外網(wǎng)IP地址為199.6.7.2

URL 是否存在跨域
http://www.aaa.com/a.js
http://www.aaa.com/b.js
同一域名 不存在跨域
http://www.aaa.com/aaa/a.js
http://www.aaa.com/bbb/b.js
同一域名不同文件夾 不存在跨域
http://www.aaa.com:8080/a.js
http://www.aaa.com:8000/b.js
同一域名不同接口 存在跨域
http://www.aaa.com/a.js
https://www.aaa.com/b.js
同一域名不同協(xié)議 存在跨域
http://www.aaa.com/a.js
http://199.6.7.2/b.js
域名和對應域名的IP地址 存在跨域
http://www.aaa.com/a.js
http://son.aaa.com/b.js
同一域名不同子域 存在跨域
http://www.aaa.com/a.js
http://www.son.aaa.com/b.js
同一域名不同二級域名 存在跨域
http://www.aaa.com/a.js
http://www.bbb.com/b.js
不同域名 存在跨域

解決跨域

1. Vue解決

這是我們的前端項目地址:http://127.0.0.1:8080/

這是我們的后端接口地址:http://127.0.0.1:8000/

(1)在vue項目的根目錄下季惩,新建vue.config.js文件

(2)寫入以下代碼

module.exports = {
  // vue.js里解決跨域問題
  devServer: {
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:8000/', // 目標地址
        changeOrigin: true,
        pathRewrite: {
          '^/api': '' // 需要重寫的地址
        }
      }
    }
  }
}

說明:這里當前端訪問到 /api 這個路徑的時候,會將url代理到 http://127.0.0.1:8000/ 這個目標地址上腻格,并將 /api 這個路徑重寫画拾。

舉個例子:這是我們后端提供的接口 http://127.0.0.1:8000/system/slider/list ,如果前端的axios直接訪問這個接口的話菜职,由于前端的端口是8080青抛,后端的端口號是8000,會引起不同域名不同端口的跨域問題酬核。于是蜜另,我們引入上面的代碼段适室,讓前端訪問的接口改為 http://127.0.0.1:8080/api/system/slider/list 。這樣前端訪問的接口 http://127.0.0.1:8080/api 這一段url會代理到 http://127.0.0.1:8000 上举瑰,這樣就滿足了同源策略捣辆,因此解決跨域問題,接口得以正常訪問此迅。

2. Nginx解決

使用nginx作為代理服務器汽畴,這樣用戶只需要在80端口上進行前后端的交互,這樣就能避免不同源的問題耸序,因此來實現(xiàn)跨域忍些。

(1)打開nginx.conf文件

(2)修改nginx配置為下面代碼

server {
    listen 80;
        server_name 127.0.0.1;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }

    location ~ /api {
        proxy_pass http://127.0.0.1:8000;
    }
}

說明:Nginx監(jiān)聽80端口,將 http://127.0.0.1 的所有請求服務轉發(fā)到127.0.0.1端口為8080坎怪;將 http://127.0.0.1/api 請求轉發(fā)到 http://127.0.0.1:8000 上罢坝,nginx實現(xiàn)跨域的原理,實際上就是把web項目和后端接口項目放到同一個域中搅窿,這樣滿足同源的策略嘁酿,然后根據(jù)請求地址去請求不同的服務器。

舉個例子:當用戶訪問 http://127.0.0.1 這個地址時戈钢,會被nginx轉發(fā)到 http://127.0.0.1:8080 這個地址上痹仙,這樣就能訪問到我們的前端項目;當用戶想訪問 http://127.0.0.1:8000/system/slider/list 這個接口時殉了,就必須把接口url換個形式开仰,用 http://127.0.0.1/api/system/slider/list 這個url來訪問接口,讓其接口請求轉發(fā)到 http://127.0.0.1:8000/system/slider/list 這個接口url上薪铜。

如有不當之處众弓,歡迎指正,謝謝8艄俊N酵蕖!


如需轉載蜒滩,請加上本文的鏈接并標明出處

一條愛吃屎的狗:https://www.qnmlgb.top

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末滨达,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子俯艰,更是在濱河造成了極大的恐慌捡遍,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竹握,死亡現(xiàn)場離奇詭異画株,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門谓传,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜈项,“玉大人,你說我怎么就攤上這事续挟〗糇洌” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵诗祸,是天一觀的道長常侦。 經(jīng)常有香客問我,道長贬媒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任肘习,我火速辦了婚禮际乘,結果婚禮上,老公的妹妹穿的比我還像新娘漂佩。我一直安慰自己脖含,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布投蝉。 她就那樣靜靜地躺著养葵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瘩缆。 梳的紋絲不亂的頭發(fā)上关拒,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音庸娱,去河邊找鬼着绊。 笑死,一個胖子當著我的面吹牛熟尉,可吹牛的內容都是我干的归露。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼斤儿,長吁一口氣:“原來是場噩夢啊……” “哼剧包!你這毒婦竟也來了?” 一聲冷哼從身側響起往果,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤疆液,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后棚放,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枚粘,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年飘蚯,在試婚紗的時候發(fā)現(xiàn)自己被綠了馍迄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片福也。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖攀圈,靈堂內的尸體忽然破棺而出暴凑,到底是詐尸還是另有隱情,我是刑警寧澤赘来,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布现喳,位于F島的核電站,受9級特大地震影響犬辰,放射性物質發(fā)生泄漏嗦篱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一幌缝、第九天 我趴在偏房一處隱蔽的房頂上張望灸促。 院中可真熱鬧,春花似錦涵卵、人聲如沸浴栽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽典鸡。三九已至,卻和暖如春坏晦,著一層夾襖步出監(jiān)牢的瞬間萝玷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工英遭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留间护,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓挖诸,卻偏偏與公主長得像汁尺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子多律,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361