<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
相信很多人都用過proxy,這裡就不多說proxy的基本使用,這裡要說一下很多人使用proxy的一個誤區,大家一般都是直接將管官方的例子拿過來,修改一下代理目標直接就是用了,但是代理的路徑匹配你真的會用麼?
如果你能夠認證看完那麼我保證你下次再設定代理的時候就能一步就能完成,無需多次npm run serve
先來一個正則熱熱身待會需要用,看懂了再往下看:
這是我使用express自己搭建的一個超級簡單的伺服器,程式碼如下(沒有設定允許跨域請求)
// 引入 express 框架 const express = require("express") // 建立網站伺服器 const app = express() app.get("/list", (req, res) => { // 向用戶端直接響應一個物件 res.send({ name: "張三", age: 333 }) }) app.get("/aa/api/list", (req, res) => { // 向用戶端直接響應一個物件 res.send({ name: "李四", age: 666 }) }) app.get("/aa/list", (req, res) => { // 向用戶端直接響應一個物件 res.send({ name: "王五", age: 888 }) }) // 監聽埠 app.listen(3000) console.log("網站伺服器啟動成功")
下面是我的vue.config.js的設定資訊
const path = require("path") module.exports = { devServer: { // open: true, //開啟瀏覽器 overlay: { //當出現編譯錯誤或警告時,在瀏覽器中顯示全螢幕覆蓋。 warnings: false, //不顯示警告 errors: true, //顯示錯誤 }, proxy: { //下面的key是一個正規表示式它的/api前加上^和不加^符號差別非常大 "/api": { target: "http://localhost:3000", pathRewrite: { //下面的key是一個正規表示式它的/api前加上^和不加^符號差別非常大 "^/api": "", }, }, }, }, runtimeCompiler: true, lintOnSave: false, configureWebpack: { resolve: { alias: { "@": path.resolve(__dirname, "src"), }, }, }, }
大家只需要關注下面的一部分就可以了,其他的對這次講解沒有影響:
傳送請求的程式碼如下:
<template> <div> <!-- 測試跨域,這個測試的非常好 --> <el-button @click="send1" type="success">點我傳送請求1</el-button> <el-button @click="send2" type="success">點我傳送請求2</el-button> </div> </template> <script> import { axiosImpl } from "@/utils/request" export default { methods: { async send1() { let res = await axiosImpl.get("/aa/api/list") console.log(res) }, async send2() { let res = await axiosImpl.get("/api/list") console.log(res) }, }, } </script> <style></style>
很簡單的幾行程式碼,那麼此時點選兩個按鈕會分別輸入什麼呢?
看結果:
也許想的和你不太一樣,那麼這就是我們要說的重點了,在圈1和圈2圈起來的地方,是一個正規表示式
由於此時圈1沒有加^
符號,那麼所有帶有/api的請求都會進來,然後進行代理,在進行pathRewrite的時候,由於加上了^
符號,那麼就只會匹配以/api開頭的路徑,把以/api開頭的這一個/符號和三個字母變為空,其餘的都保留下來,因此第一個請求到伺服器就變成了/aa/api/list,第二個就變成了/list,因此結果就變成了上面的樣子。
如果將vue.config.js的值改成下面的這個樣子,其餘的不變,結果又會是什麼呢?
結果如下:
原理和上面的一樣
由於此時圈1加上了^
符號,那麼所有以/api開頭的請求都會進來,然後進行代理,在代理的時候,由於沒有上了^
符號,那麼就會吧路徑中所有的/api都變成空,對於請求二到最後到伺服器就只剩下了一個/list,因此結果就變成了上面的樣子。
圈一和圈二的地方都是正規表示式,再設定proxy的時候一定要看清楚有沒有加^
符號或者^
符號有沒有加錯,或者是不是寫成了正規表示式裡面的其他符號
到此這篇關於vue跨域proxy代理設定詳解的文章就介紹到這了,更多相關vue proxy內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45