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)境,以及預(yù)發(fā)布環(huán)境
在根目錄創(chuàng)建 .env[mode] 文件,在項目執(zhí)行 npm run dev 的時候vite會自動去讀取.env.development文件里面的配置,執(zhí)行npm runbuild進行打包之后也會自動將.env.production的內(nèi)容打包進去,這里注意的是,如果你想進入預(yù)發(fā)布模式的話需要在打包的時候進行mode配置:npm run build --mode staging
公共的 .env
開發(fā)環(huán)境 .env.development
生產(chǎn)環(huán)境 .env.production
預(yù)發(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)境下去請求對應(yīng)環(huán)境的域名并且配置代理進行跨域
補充:解決跨域常用方法
一、VUE中常用proxy來解決跨域問題
1、在vue.config.js中設(shè)置如下代碼片段
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: { // 配置跨域
'/api':{
target:`http://www.baidu.com`, //請求后臺接口
changeOrigin:true, // 允許跨域
pathRewrite:{
'^/api' : '' // 重寫請求
}
}
},
}
2、創(chuàng)捷axioss實例時,將baseUrl設(shè)置為 ‘/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請求之中。設(shè)為true,即表示服務(wù)器明確許可,Cookie可以包含在請求中,一起發(fā)給服務(wù)器。這個值也只能設(shè)為true。如果要發(fā)送Cookie,Access-Control-Allow-Origin必須設(shè)置為必須指定明確的、與請求網(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)
},
總結(jié)
到此這篇關(guān)于vue使用vite配置跨域以及環(huán)境配置的文章就介紹到這了,更多相關(guān)vite配置跨域及環(huán)境配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在vue中路由使用this.$router.go(-1)返回兩次問題
這篇文章主要介紹了在vue中路由使用this.$router.go(-1)返回兩次問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
完美解決vue 中多個echarts圖表自適應(yīng)的問題
這篇文章主要介紹了完美解決vue 中多個echarts圖表自適應(yīng)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Vue3?攜手?TypeScript?搭建完整項目結(jié)構(gòu)
TypeScript 是JS的一個超級,主要提供了類型系統(tǒng)和對ES6的支持,使用 TypeScript 可以增加代碼的可讀性和可維護性,在 react 和 vue 社區(qū)中也越來越多人開始使用TypeScript,這篇文章主要介紹了Vue3?攜手?TypeScript?搭建完整項目結(jié)構(gòu),需要的朋友可以參考下2022-04-04
Vue2 配置 Axios api 接口調(diào)用文件的方法
本篇文章主要介紹了Vue2 配置 Axios api 接口調(diào)用文件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
vue2和vue3部署到服務(wù)器子目錄為空白頁問題及解決
這篇文章主要介紹了vue2和vue3部署到服務(wù)器子目錄為空白頁問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
VUE實現(xiàn)分布式醫(yī)療掛號系統(tǒng)預(yù)約掛號首頁步驟詳情
這篇文章主要為大家介紹了VUE實現(xiàn)分布式醫(yī)療掛號系統(tǒng)預(yù)約掛號首頁步驟詳情,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04


