成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

3403771864 / 2317人閱讀

  這篇文章要說的就是如何配置跨域,代理域名,其實(shí)這個(gè)話題繞不開的,現(xià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)境

  我們先說說這個(gè)流程,首先在根目錄創(chuàng)建.env[mode]文件,這樣就可以在項(xiàng)目執(zhí)行 npm run dev 的時(shí)候vite會(huì)自動(dòng)去讀取.env.development文件里面的配置,當(dāng)然在執(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

1.png

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

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

  這里我們需要的做就是針對環(huán)境進(jìn)行設(shè)置:

  頁面的統(tǒng)一標(biāo)題,參數(shù)常量…

  下面根據(jù)環(huán)境配置不同的請求域名????
  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/, '')
  }
  }
  },
  }
  })

  現(xiàn)在vite.config.js的配置說完,也展示了在不同環(huán)境下去請求對應(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`, //請求后臺(tái)接口
  changeOrigin:true, // 允許跨域
  pathRewrite:{
  '^/api' : '' // 重寫請求
  }
  }
  },
  }


  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 的一種"使用模式",就是我們可以用在其他人的頁面中獲取資料,即跨域讀取數(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 跨域請求資源,支持現(xiàn)代瀏覽器,IE支持10以上

  在CORS請求,頭部信息中我們說說三個(gè)字段:

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

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

  Access-Control-Expose-Headers:可選。CORS請求時(shí),XMLHttpRequest對象的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)
  },

        現(xiàn)在都已講述完畢,大家有很多好的內(nèi)容可以多多交流。


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/127828.html

相關(guān)文章

  • 如何使用vite搭建vue3項(xiàng)目詳解

      須知:使用vite需要node版本在12以上  一:npm構(gòu)建  1、npm init vite@latest  2、Project name:(項(xiàng)目名稱)  3、Select a framework:(選擇要用什么構(gòu)建自己的項(xiàng)目,這邊選vue)然后會(huì)有兩個(gè)選項(xiàng)一個(gè)是vue(vue+js) ,一個(gè)是vue+ts,要依照自己需求做選擇  4、cd到項(xiàng)目下npm install 安裝一下依賴  注...

    3403771864 評論0 收藏0
  • Nuxt 3 即將發(fā)布、layui 即將退出歷史舞臺(tái) | 淘系前端架構(gòu)周刊 210927 期

    摘要:即將發(fā)布經(jīng)過漫長的等待,即將發(fā)布。是一款很不錯(cuò)的組件庫,雖然在的下載量仍遠(yuǎn)高于,但不可否認(rèn)的是在生態(tài)和社區(qū)活躍度上,更勝一籌。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,...

    NusterCache 評論0 收藏0
  • VUE跨域詳解以及常用解決跨域的方法匯總

      跨域  要知道在請求后臺(tái)接口遇到Access-Control-Allow-Origin時(shí),這就表明跨域了?! ∈紫冉忉尶缬?,是因?yàn)闉g覽器的同源策略所導(dǎo)致,同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,同源是指:域名、協(xié)議、端口相同  解決跨域常用方法:  一、VUE中常用proxy來解決跨域問題  1、在vue.config.js中設(shè)置如下代碼...

    3403771864 評論0 收藏0
  • vue開發(fā)項(xiàng)目完全指南

    摘要:有兩種方法,一種是在開發(fā)環(huán)境中設(shè)置通過的,另一種是在服務(wù)器上修改的配置設(shè)置。這樣我們以后使用訪問接口就可以不加了,打包后訪問也不用手動(dòng)去除統(tǒng)一管理在項(xiàng)目開發(fā)過程中,會(huì)涉及到很多接口的處理,當(dāng)項(xiàng)目足夠大時(shí),就需要統(tǒng)一管理接口。 這篇文章總結(jié)了vue項(xiàng)目的所遇到的問題,包括跨域、用戶認(rèn)證、接口統(tǒng)一管理、路由配置、兼容性處理,性能優(yōu)化等內(nèi)容。 項(xiàng)目github地址 : 前端 https:...

    leoperfect 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<