欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue使用vite配置跨域以及環(huán)境配置詳解

 更新時(shí)間:2022年07月13日 11:24:22   作者:此用戶已成仙  
跨域是指當(dāng)一個(gè)資源去訪問另一個(gè)不同域名或者同域名不同端口的資源時(shí),就會(huì)發(fā)出跨域請(qǐng)求,下面這篇文章主要給大家介紹了關(guān)于vue使用vite配置跨域以及環(huán)境配置的相關(guā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] 文件,在項(xiàng)目執(zhí)行 npm run dev 的時(shí)候vite會(huì)自動(dòng)去讀取.env.development文件里面的配置,執(zhí)行npm runbuild進(jìn)行打包之后也會(huì)自動(dòng)將.env.production的內(nèi)容打包進(jìn)去,這里注意的是,如果你想進(jìn)入預(yù)發(fā)布模式的話需要在打包的時(shí)候進(jìn)行mode配置:npm run build --mode staging
公共的 .env
開發(fā)環(huán)境 .env.development
生產(chǎn)環(huán)境 .env.production
預(yù)發(fā)布環(huán)境 .env.staging
環(huán)境

在.env.development配置了一個(gè)域名:

`.env.development`
// 開發(fā)環(huán)境配置
VITE_BASIC_URL = https://basic.com

可以做什么事

針對(duì)不同的環(huán)境可以去配置,例如頁面的統(tǒng)一標(biāo)題,參數(shù)常量…
下面根據(jù)環(huán)境配置不同的請(qǐng)求域名??

import { defineConfig, loadEnv } from 'vite'
export default defineConfig(({ mode }) => {
  // 獲取當(dāng)前環(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)境下去請(qǐng)求對(duì)應(yīng)環(huán)境的域名并且配置代理進(jìn)行跨域

補(bǔ)充:解決跨域常用方法

一、VUE中常用proxy來解決跨域問題

1、在vue.config.js中設(shè)置如下代碼片段

module.exports = {
  dev: {
    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: { // 配置跨域
    '/api':{
        target:`http://www.baidu.com`, //請(qǐng)求后臺(tái)接口
        changeOrigin:true, // 允許跨域
        pathRewrite:{
            '^/api' : '' // 重寫請(qǐng)求
        }
    }
  },
}

2、創(chuàng)捷axioss實(shí)例時(shí),將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的標(biāo)簽
               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 跨域請(qǐng)求資源,支持現(xiàn)代瀏覽器,IE支持10以上

在CORS請(qǐng)求,頭部信息中包含以下三個(gè)字段:

Access-Control-Allow-Origin: 該字段是必須的。它的值要么是請(qǐng)求時(shí)Origin字段的值,要么是一個(gè)*,表示接受任意域名的請(qǐng)求,

Access-Control-Allow-Credentials: 可選,值為布爾值,表示是否允許發(fā)送Cookie。默認(rèn)情況下,Cookie不包括在CORS請(qǐng)求之中。設(shè)為true,即表示服務(wù)器明確許可,Cookie可以包含在請(qǐng)求中,一起發(fā)給服務(wù)器。這個(gè)值也只能設(shè)為true。如果要發(fā)送Cookie,Access-Control-Allow-Origin必須設(shè)置為必須指定明確的、與請(qǐng)求網(wǎng)頁一致的域名

Access-Control-Expose-Headers:可選。CORS請(qǐng)求時(shí),XMLHttpRequest對(duì)象的getResponseHeader()方法只能拿到6個(gè)基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必須在Access-Control-Expose-Headers里面指定

四、iframe實(shí)現(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析前端路由簡介以及vue-router實(shí)現(xiàn)原理

    淺析前端路由簡介以及vue-router實(shí)現(xiàn)原理

    路由就是用來跟后端服務(wù)器進(jìn)行交互的一種方式,通過不同的路徑,來請(qǐng)求不同的資源,請(qǐng)求不同的頁面是路由的其中一種功能。這篇文章主要介紹了前端路由簡介以及vue-router實(shí)現(xiàn)原理,需要的朋友可以參考下
    2018-06-06
  • Vue3中provide和inject作用和場景

    Vue3中provide和inject作用和場景

    Vue3中provide和inject作用和場景是頂層組件向任意的底層組件傳遞數(shù)據(jù)和方法,實(shí)現(xiàn)跨層組件通信,本文通過實(shí)例介紹Vue3 provide和inject的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2023-11-11
  • Vue3中Element-Plus分頁(Pagination)組件的使用

    Vue3中Element-Plus分頁(Pagination)組件的使用

    Element-Plus分頁(Pagination)組件在開發(fā)過程中數(shù)據(jù)展示會(huì)經(jīng)常使用到,同時(shí)分頁功能也會(huì)添加到頁面中,下面我們就來學(xué)習(xí)一下它的具體使用,需要的可以參考一下
    2023-11-11
  • vue使用echarts實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)的示例詳解

    vue使用echarts實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)的示例詳解

    這篇文章主要為大家詳細(xì)介紹了vue如何使用echarts實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù),文中的示例講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Vue 頁面監(jiān)聽用戶預(yù)覽時(shí)間功能的實(shí)現(xiàn)代碼

    Vue 頁面監(jiān)聽用戶預(yù)覽時(shí)間功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Vue 頁面如何監(jiān)聽用戶預(yù)覽時(shí)間,首先需要借助vue頁面的生命周期函數(shù)mounted和destroyed,分別加入開始計(jì)時(shí)和清除計(jì)時(shí)的邏輯,通過相關(guān)操作實(shí)現(xiàn)此功能,需要的朋友可以參考下
    2021-07-07
  • Vue3中Composition?API和Options?API的區(qū)別

    Vue3中Composition?API和Options?API的區(qū)別

    Vue3的Composition API和Options API是Vue.js框架中的兩種不同的API,本文主要介紹了Vue3中Composition?API和Options?API的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 解決vue的component標(biāo)簽渲染問題

    解決vue的component標(biāo)簽渲染問題

    這篇文章主要介紹了解決vue的component標(biāo)簽渲染問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 如何使用Vue3實(shí)現(xiàn)文章內(nèi)容中多個(gè)"關(guān)鍵詞"標(biāo)記高亮顯示

    如何使用Vue3實(shí)現(xiàn)文章內(nèi)容中多個(gè)"關(guān)鍵詞"標(biāo)記高亮顯示

    高亮顯示是我們?nèi)粘i_發(fā)中經(jīng)常會(huì)遇到的需求,下面這篇文章主要給大家介紹了關(guān)于如何使用Vue3實(shí)現(xiàn)文章內(nèi)容中多個(gè)"關(guān)鍵詞"標(biāo)記高亮顯示的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 在vue中實(shí)現(xiàn)嵌套頁面(iframe)

    在vue中實(shí)現(xiàn)嵌套頁面(iframe)

    這篇文章主要介紹了在vue中實(shí)現(xiàn)嵌套頁面(iframe),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Proxy中代理數(shù)據(jù)攔截的方法詳解

    Proxy中代理數(shù)據(jù)攔截的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Proxy中代理數(shù)據(jù)攔截的方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-12-12

最新評(píng)論