您好,登錄后才能下訂單哦!
這篇文章主要介紹“vue跨域proxy代理如何配置”,在日常操作中,相信很多人在vue跨域proxy代理如何配置問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”vue跨域proxy代理如何配置”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
相信很多人都用過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,因此結果就變成了上面的樣子。
到此,關于“vue跨域proxy代理如何配置”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。