Vue cli 3.x 版本跨域問題

前言

首先簡單的說一下什么是跨域

  1. 跨域首先是出現(xiàn)在瀏覽器里的往堡,也就是瀏覽器攔截了跨域請求洛搀。
  2. 跨域所跨的域(domain)一般來說指:當前要發(fā)出的請求其域(協(xié)議 + ip地址 + 端口)與本應用的不一樣棠耕。

本篇只總結了筆者個人所使用過的 2 種經(jīng)驗舶沛,至少也是我認為正確的結論分享在此篇席函。

目錄

  • 配置 proxy 解決跨域
  • 配置白名單解決跨域

配置 proxy

首先說一下 proxy 的原理就像其單詞是一樣的还绘,因為跨域請求攔截是瀏覽器的行為楚昭,而并非服務器的行為,因此拍顷,可以嘗試通過另一種方式發(fā)送請求抚太,比如讓 一個可請求的中間服務代為發(fā)送請求。

作為本篇的主角 vue昔案,cli 3.x 構建的項目一般需要一個 vue.config.js 文件來配合實現(xiàn) proxy 的功能尿贫。

1. 創(chuàng)建 vue.config.js

package.json 文件同級目錄下,創(chuàng)建 vue.config.js 配置文件(如果已經(jīng)有了當然就不用創(chuàng)建了)踏揣。

2. 修改 vue.config.js

主要就是 proxy 里面的東西庆亡,其實都可以直接復制,修改一下 target 為實際要請求的地址即可

module.exports = {
  publicPath: '/',
  outputDir: 'dist',
  devServer: {
    open: true,
    host: 'localhost',
    port: '8081',
    proxy: {
      '/api': {
        target: 'http://localhost:8082', // 要請求的地址
        ws: true,
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
};

3. axios 使用 proxy

這里的話其實就是注意以下 url 或者說路徑就可以了捞稿,例如我要用 post 請求 http://localhost:8082/students又谋,這個時候我們就可以這么寫:

axios
  .post("/api/students")
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.log(err);
  });

這里這個 /api 就等價于 http://localhost:8082,但最終會被替換為 http://localhost:8081/api/students(我啟動的 vue 項目是 8081)

本例子只是為了實驗 post 而故意迎合娱局,實際開發(fā)中建議 post 做 add 使用

proxy 模式搂根,筆者研究的時間不夠長,發(fā)布后經(jīng)常會出現(xiàn) 404 的問題铃辖,雖說可以查閱到一些相關資料剩愧,但并不是很實用的感覺;總的來說娇斩, proxy 模式可能目前在我看來是更偏向于開發(fā)期間所使用

配置白名單

該方案也很直白仁卷,就是把允許訪問的站點配置一下,讓他作為可信站點即可犬第。

這通常與 Access-Control-Allow-Origin 聯(lián)系緊密锦积。

采用這種方案不需要前端做什么,只需要配置一下后端服務即可歉嗓。

我們用一個 express 的項目為例:

./routes
├── ./routes/index.js
├── ./routes/students.js
└── ./routes/users.js

假如我要給 users.js 這個路由設置白名單丰介,只需要添加一個 router.all 即可

var express = require('express');
var router = express.Router();

router.all('*', (req, res, next) => {
  res.header('Access-Control-Allow-Origin', 'http://localhost:8081');
  res.header('Access-Control-Allow-Headers', 'X-Requested-With');
  res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS');
  res.header('X-Powered-By', ' 3.2.1');
  res.header('Content-Type', 'application/json;charset=utf-8');
  next();
});

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send(
    JSON.stringify([
      { name: '諸葛亮', gender: '男' },
      { name: '貂蟬', gender: '女' },
      { name: '孫策', gender: '男' }
    ])
  );
});

module.exports = router;

Access-Control-Allow-Origin 后面的 http://localhost:8081 就是受信任的站點

如此,該站點就可以訪問此路由了。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哮幢,一起剝皮案震驚了整個濱河市带膀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌橙垢,老刑警劉巖垛叨,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異柜某,居然都是意外死亡嗽元,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門喂击,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剂癌,“玉大人,你說我怎么就攤上這事翰绊∨骞龋” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵辞做,是天一觀的道長。 經(jīng)常有香客問我寡具,道長秤茅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任童叠,我火速辦了婚禮框喳,結果婚禮上,老公的妹妹穿的比我還像新娘厦坛。我一直安慰自己五垮,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布杜秸。 她就那樣靜靜地躺著放仗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撬碟。 梳的紋絲不亂的頭發(fā)上诞挨,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音呢蛤,去河邊找鬼惶傻。 笑死,一個胖子當著我的面吹牛其障,可吹牛的內(nèi)容都是我干的银室。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼斟赚,長吁一口氣:“原來是場噩夢啊……” “哼闲先!你這毒婦竟也來了?” 一聲冷哼從身側響起笆呆,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扶认,失蹤者是張志新(化名)和其女友劉穎侨拦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辐宾,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡狱从,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叠纹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片季研。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖誉察,靈堂內(nèi)的尸體忽然破棺而出与涡,到底是詐尸還是另有隱情,我是刑警寧澤持偏,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布驼卖,位于F島的核電站,受9級特大地震影響鸿秆,放射性物質(zhì)發(fā)生泄漏酌畜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一卿叽、第九天 我趴在偏房一處隱蔽的房頂上張望桥胞。 院中可真熱鬧,春花似錦考婴、人聲如沸贩虾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缎罢。三九已至,卻和暖如春考杉,著一層夾襖步出監(jiān)牢的瞬間屁使,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工奔则, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛮寂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓易茬,卻偏偏與公主長得像酬蹋,于是被迫代替她去往敵國和親及老。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容