vue使用vite配置跨域以及環(huán)境配置詳解
如何配置跨域,代理域名
不管使用什么腳手架,配置代理都是繞不開的話題,下面是vite的代理
server: { proxy: { '/api': { target: 'https://baidu.com', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } },
區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境,以及預發(fā)布環(huán)境
在根目錄創(chuàng)建 .env[mode] 文件,在項目執(zhí)行 npm run dev 的時候vite會自動去讀取.env.development文件里面的配置,執(zhí)行npm runbuild進行打包之后也會自動將.env.production的內容打包進去,這里注意的是,如果你想進入預發(fā)布模式的話需要在打包的時候進行mode配置:npm run build --mode staging
公共的 .env
開發(fā)環(huán)境 .env.development
生產(chǎn)環(huán)境 .env.production
預發(fā)布環(huán)境 .env.staging
在.env.development配置了一個域名:
`.env.development` // 開發(fā)環(huán)境配置 VITE_BASIC_URL = https://basic.com
可以做什么事
針對不同的環(huán)境可以去配置,例如頁面的統(tǒng)一標題,參數(shù)常量…
下面根據(jù)環(huán)境配置不同的請求域名??
import { defineConfig, loadEnv } from 'vite' export default defineConfig(({ mode }) => { // 獲取當前環(huán)境的配置 const config = loadEnv(mode, './') return { server: { proxy: { '/basice': { target: config.VITE_BASIC_URL, changeOrigin: true, rewrite: (path) => path.replace(/^\/basice/, '') } } }, } })
以上是vite.config.js的配置,上面展示了在不同環(huán)境下去請求對應環(huán)境的域名并且配置代理進行跨域
補充:解決跨域常用方法
一、VUE中常用proxy來解決跨域問題
1、在vue.config.js中設置如下代碼片段
module.exports = { dev: { // Paths assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: { // 配置跨域 '/api':{ target:`http://www.baidu.com`, //請求后臺接口 changeOrigin:true, // 允許跨域 pathRewrite:{ '^/api' : '' // 重寫請求 } } }, }
2、創(chuàng)捷axioss實例時,將baseUrl設置為 ‘/api’
const http = axios.create({ timeout: 1000 * 1000000, withCredentials: true, BASE_URL: '/api' headers: { 'Content-Type': 'application/json; charset=utf-8' } })
二、JSONP解決跨域
Jsonp(JSON with Padding) 是 json 的一種"使用模式",可以讓網(wǎng)頁從別的域名(網(wǎng)站)那獲取資料,即跨域讀取數(shù)據(jù)。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div id="textID"></div> <script type="text/javascript"> function text_jsonp(req){ // 創(chuàng)建script的標簽 var script = document.createElement('script'); // 拼接 url var url = req.url + '?callback=' + req.callback.name; // 賦值url script.src = url; // 放入頭部 document.getElementsByTagName('head')[0].appendChild(script); } </script> </body> </html>
三、CORS是跨域資源共享(Cross-Origin Resource Sharing),以 ajax 跨域請求資源,支持現(xiàn)代瀏覽器,IE支持10以上
在CORS請求,頭部信息中包含以下三個字段:
Access-Control-Allow-Origin: 該字段是必須的。它的值要么是請求時Origin字段的值,要么是一個*,表示接受任意域名的請求,
Access-Control-Allow-Credentials: 可選,值為布爾值,表示是否允許發(fā)送Cookie。默認情況下,Cookie不包括在CORS請求之中。設為true,即表示服務器明確許可,Cookie可以包含在請求中,一起發(fā)給服務器。這個值也只能設為true。如果要發(fā)送Cookie,Access-Control-Allow-Origin必須設置為必須指定明確的、與請求網(wǎng)頁一致的域名
Access-Control-Expose-Headers:可選。CORS請求時,XMLHttpRequest對象的getResponseHeader()方法只能拿到6個基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必須在Access-Control-Expose-Headers里面指定
四、iframe實現(xiàn)跨域
iframe(src){ //數(shù)組 if(Array.isArray(src)){ this.docs.visible = true; }else{ this.docs.visible = false; } this.link = src if(this.docs.visible == false){ if(this.$refs['ruleIframe'] && this.$refs['ruleIframe'].querySelector('iframe')){ this.$refs['ruleIframe'].querySelector('iframe').remove() //刪除自身 } var iframe = document.createElement('iframe'); iframe.width = '100%'; iframe.height = '100%'; iframe.setAttribute('frameborder','0') iframe.src = src; this.append(iframe) } }, //創(chuàng)建元素 防止 獲取不到 ruleIframe 遞歸 append(iframe){ if(this.$refs['ruleIframe']){ this.$refs['ruleIframe'].appendChild(iframe); return } setTimeout(()=>{ this.append(iframe); },500) },
總結
到此這篇關于vue使用vite配置跨域以及環(huán)境配置的文章就介紹到這了,更多相關vite配置跨域及環(huán)境配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺析前端路由簡介以及vue-router實現(xiàn)原理
路由就是用來跟后端服務器進行交互的一種方式,通過不同的路徑,來請求不同的資源,請求不同的頁面是路由的其中一種功能。這篇文章主要介紹了前端路由簡介以及vue-router實現(xiàn)原理,需要的朋友可以參考下2018-06-06Vue3中Element-Plus分頁(Pagination)組件的使用
Element-Plus分頁(Pagination)組件在開發(fā)過程中數(shù)據(jù)展示會經(jīng)常使用到,同時分頁功能也會添加到頁面中,下面我們就來學習一下它的具體使用,需要的可以參考一下2023-11-11vue使用echarts實現(xiàn)動態(tài)數(shù)據(jù)的示例詳解
這篇文章主要為大家詳細介紹了vue如何使用echarts實現(xiàn)動態(tài)數(shù)據(jù),文中的示例講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下2023-11-11Vue 頁面監(jiān)聽用戶預覽時間功能的實現(xiàn)代碼
這篇文章主要介紹了Vue 頁面如何監(jiān)聽用戶預覽時間,首先需要借助vue頁面的生命周期函數(shù)mounted和destroyed,分別加入開始計時和清除計時的邏輯,通過相關操作實現(xiàn)此功能,需要的朋友可以參考下2021-07-07Vue3中Composition?API和Options?API的區(qū)別
Vue3的Composition API和Options API是Vue.js框架中的兩種不同的API,本文主要介紹了Vue3中Composition?API和Options?API的區(qū)別,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧2023-06-06如何使用Vue3實現(xiàn)文章內容中多個"關鍵詞"標記高亮顯示
高亮顯示是我們日常開發(fā)中經(jīng)常會遇到的需求,下面這篇文章主要給大家介紹了關于如何使用Vue3實現(xiàn)文章內容中多個"關鍵詞"標記高亮顯示的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-11-11