這篇文章要說的就是如何配置跨域,代理域名,其實這個話題繞不開的,現在我們就說說vite的代理
server: { proxy: { '/api': { target: 'https://baidu.com', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } },
區分開發環境和生產環境,以及預發布環境
我們先說說這個流程,首先在根目錄創建.env[mode]文件,這樣就可以在項目執行 npm run dev 的時候vite會自動去讀取.env.development文件里面的配置,當然在執行npm runbuild進行打包之后也會自動將.env.production的內容打包進去,這里需要提醒的是如果你想進入預發布模式的話需要在打包的時候進行mode配置:npm run build --mode staging
公共的.env
開發環境.env.development
生產環境.env.production
預發布環境.env.staging
在.env.development配置了一個域名:
`.env.development` // 開發環境配置 VITE_BASIC_URL = https://basic.com
這里我們需要的做就是針對環境進行設置:
頁面的統一標題,參數常量…
下面根據環境配置不同的請求域名???? import { defineConfig, loadEnv } from 'vite' export default defineConfig(({ mode }) => { // 獲取當前環境的配置 const config = loadEnv(mode, './') return { server: { proxy: { '/basice': { target: config.VITE_BASIC_URL, changeOrigin: true, rewrite: (path) => path.replace(/^\/basice/, '') } } }, } })
現在vite.config.js的配置說完,也展示了在不同環境下去請求對應環境的域名并且配置代理進行跨域
補充:解決跨域常用方法
一、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、創捷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 的一種"使用模式",就是我們可以用在其他人的頁面中獲取資料,即跨域讀取數據?!?/p>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div id="textID"></div> <script type="text/javascript"> function text_jsonp(req){ // 創建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 跨域請求資源,支持現代瀏覽器,IE支持10以上
在CORS請求,頭部信息中我們說說三個字段:
Access-Control-Allow-Origin: 該字段是必須的。它的值要么是請求時Origin字段的值,要么是一個*,表示接受任意域名的請求,
Access-Control-Allow-Credentials: 可選,值為布爾值,表示是否允許發送Cookie。默認情況下,Cookie不包括在CORS請求之中。設為true,即表示服務器明確許可,Cookie可以包含在請求中,一起發給服務器。這個值也只能設為true。如果要發送Cookie,Access-Control-Allow-Origin必須設置為必須指定明確的、與請求網頁一致的域名
Access-Control-Expose-Headers:可選。CORS請求時,XMLHttpRequest對象的getResponseHeader()方法只能拿到6個基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必須在Access-Control-Expose-Headers里面指定
四、iframe實現跨域
iframe(src){ //數組 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) } }, //創建元素 防止 獲取不到 ruleIframe 遞歸 append(iframe){ if(this.$refs['ruleIframe']){ this.$refs['ruleIframe'].appendChild(iframe); return } setTimeout(()=>{ this.append(iframe); },500) },
現在都已講述完畢,大家有很多好的內容可以多多交流。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127828.html
須知:使用vite需要node版本在12以上 一:npm構建 1、npm init vite@latest 2、Project name:(項目名稱) 3、Select a framework:(選擇要用什么構建自己的項目,這邊選vue)然后會有兩個選項一個是vue(vue+js) ,一個是vue+ts,要依照自己需求做選擇 4、cd到項目下npm install 安裝一下依賴 注...
摘要:即將發布經過漫長的等待,即將發布。是一款很不錯的組件庫,雖然在的下載量仍遠高于,但不可否認的是在生態和社區活躍度上,更勝一籌。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,...
跨域 要知道在請求后臺接口遇到Access-Control-Allow-Origin時,這就表明跨域了?! ∈紫冉忉尶缬?,是因為瀏覽器的同源策略所導致,同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,同源是指:域名、協議、端口相同 解決跨域常用方法: 一、VUE中常用proxy來解決跨域問題 1、在vue.config.js中設置如下代碼...
摘要:有兩種方法,一種是在開發環境中設置通過的,另一種是在服務器上修改的配置設置。這樣我們以后使用訪問接口就可以不加了,打包后訪問也不用手動去除統一管理在項目開發過程中,會涉及到很多接口的處理,當項目足夠大時,就需要統一管理接口。 這篇文章總結了vue項目的所遇到的問題,包括跨域、用戶認證、接口統一管理、路由配置、兼容性處理,性能優化等內容。 項目github地址 : 前端 https:...
閱讀 547·2023-03-27 18:33
閱讀 732·2023-03-26 17:27
閱讀 630·2023-03-26 17:14
閱讀 591·2023-03-17 21:13
閱讀 521·2023-03-17 08:28
閱讀 1801·2023-02-27 22:32
閱讀 1292·2023-02-27 22:27
閱讀 2178·2023-01-20 08:28