最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vite如何在proxy代理中更改headers

 更新時(shí)間:2025年12月04日 10:43:54   作者:螞蟻二娘  
文章介紹了在使用Vite進(jìn)行代理時(shí),如何解決多次設(shè)置Access-Control-Allow-Origin導(dǎo)致的跨域問題,通過在Vite的代理服務(wù)中重寫響應(yīng)頭,可以有效解決問題,同時(shí),也提到了使用Express和http-proxy-middleware的另一種解決方案

vite在proxy代理中更改headers

平時(shí)我們在對接接口時(shí),我們都是配置代理解決跨域問題

 proxy: {
     '^/api': {
         target: envConfig.VITE_APP_BASE_URL,
         changeOrigin: true,
         rewrite: (path) => path.replace(/^/api/, ''),
   }
 } 

某天你明明配置好了代理,瀏覽器還是會有跨域問題報(bào)錯(cuò)

查看response header, 你會發(fā)現(xiàn)

 Access-Control-Allow-Origin: *, * 

這里Access-Control-Allow-Origin不單是一個(gè)*

google后可以確定是這個(gè)請求頭被設(shè)置了2次*

和后端反饋后,很久啥也沒查出來,就是解決不了

那前端要怎么做呢?

思路1

在項(xiàng)目中重啟一個(gè)node服務(wù),再做一次轉(zhuǎn)發(fā),在轉(zhuǎn)發(fā)的過程中重寫這個(gè)response header解決跨域問題

  • 1.安裝一個(gè)express
  • 2.安裝cors中間件
  • 3.安裝http-proxy-middleware進(jìn)行代理轉(zhuǎn)發(fā)

這里轉(zhuǎn)發(fā)的時(shí)候不能說直接都轉(zhuǎn)發(fā)了,你會發(fā)現(xiàn)還是有問題

 const { createProxyMiddleware, responseInterceptor } = require('http-proxy-middleware');
 ?
 const proxy = createProxyMiddleware({
   selfHandleResponse: true, 
   onProxyRes: responseInterceptor(async (responseBuffer, proxyRes, req, res) => {
       res.removeHeader("Access-Control-Allow-Origin")
       res.setHeader("Access-Control-Allow-Origin", "*")
       return responseBuffer
 }),
 }); 

這里一定要設(shè)置selfHandleResponse屬性,相當(dāng)于自定義返回結(jié)果

然后在監(jiān)聽onProxyRes回調(diào)函數(shù)的同時(shí),使用responseInterceptor對返回進(jìn)行攔截

responseInterceptor內(nèi)部是一個(gè)異步函數(shù),一定要使用async進(jìn)行修改,不然你會發(fā)現(xiàn)修改的沒有生效

但這樣還是太煩了,你還要維護(hù)另一個(gè)服務(wù),而且配置的自定義變量也不好使用了。。。

思路2

從vite本身的代理服務(wù)入手,你想vite這種級別的工具,這種口子應(yīng)該留的呀

查詢文檔,沒有細(xì)說,只能查到有個(gè)configure方法可以重寫

打開vite源碼找一找

源碼中server下的middleware有個(gè)proxy, 就是代理中間件,就是我要找的

發(fā)現(xiàn)就是使用的一個(gè)社區(qū)庫

http-party/node-http-proxy: A full-featured http proxy for node.js (github.com)

這個(gè)庫最近更新3年前。。。

我們這里要覆蓋response header

所以監(jiān)聽proxyRes方法,方法內(nèi)進(jìn)行操作res的headers

 server: {
   port: 3008,
   open: true,
   proxy: {
     '^/api': {
       target: envConfig.VITE_APP_BASE_URL,
       changeOrigin: true,
       rewrite: (path) => path.replace(/^/api/, ''),
       selfHandleResponse: true,
       configure: (proxy, _options) => {
         proxy.on('proxyRes', (proxyRes, req, res) => { 
           res.removeHeader("Access-Control-Allow-Origin")
           res.removeHeader("access-control-allow-origin")
           res.setHeader("Access-Control-Allow-Origin", "*")
           res.setHeader("content-type","application/json")

           proxyRes.pipe(res)
       });
     }
   },
 }
 }, 

這樣就可以解決返回頭中多次設(shè)置Access-Control-Allow-Origin的問題

同理你也可以更改request headers

你學(xué)廢了嗎?

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue編寫炫酷的時(shí)鐘插件

    Vue編寫炫酷的時(shí)鐘插件

    這篇文章主要為大家詳細(xì)介紹了Vue編寫炫酷的時(shí)鐘插件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • vue路由切換之淡入淡出的簡單實(shí)現(xiàn)

    vue路由切換之淡入淡出的簡單實(shí)現(xiàn)

    今天小編就為大家分享一篇vue路由切換之淡入淡出的簡單實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • vue生命周期實(shí)例小結(jié)

    vue生命周期實(shí)例小結(jié)

    這篇文章主要介紹了vue生命周期,結(jié)合實(shí)例形式分析了vue.js生命周期相關(guān)原理、步驟、函數(shù)與操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • Vue多環(huán)境代理配置方法思路詳解

    Vue多環(huán)境代理配置方法思路詳解

    多人協(xié)作模式下,修改代理比較麻煩,而且很容易某個(gè)開發(fā)人員會修改了vue.config.js文件后提交了。接下來通過本文給大家分享Vue多環(huán)境代理配置方法思路詳解,需要的朋友可以參考下
    2019-06-06
  • Vue3中reactive丟失響應(yīng)式的問題解決(避大坑!)

    Vue3中reactive丟失響應(yīng)式的問題解決(避大坑!)

    這篇文章主要給大家介紹了關(guān)于Vue3中reactive丟失響應(yīng)式的問題解決,vue3中reactive定義的引用類型直接賦值導(dǎo)致數(shù)據(jù)失去響應(yīng)式 ,需要的朋友可以參考下
    2023-07-07
  • Vue.js組件tree實(shí)現(xiàn)省市多級聯(lián)動(dòng)

    Vue.js組件tree實(shí)現(xiàn)省市多級聯(lián)動(dòng)

    這篇文章主要為大家詳細(xì)介紹了Vue.js組件tree實(shí)現(xiàn)省市多級聯(lián)動(dòng)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Vue引用vee-validate插件表單驗(yàn)證問題(cdn方式引用)

    Vue引用vee-validate插件表單驗(yàn)證問題(cdn方式引用)

    這篇文章主要介紹了Vue引用vee-validate插件表單驗(yàn)證問題(cdn方式引用),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 在vue中使用el-tab-pane v-show/v-if無效的解決

    在vue中使用el-tab-pane v-show/v-if無效的解決

    這篇文章主要介紹了在vue中使用el-tab-pane v-show/v-if無效的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue3(vite)設(shè)置代理封裝axios api解耦功能

    vue3(vite)設(shè)置代理封裝axios api解耦功能

    這篇文章主要介紹了vue3(vite)設(shè)置代理封裝axios api解耦,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Vuex之module使用方法及場景說明

    Vuex之module使用方法及場景說明

    這篇文章主要介紹了Vuex之module使用方法及場景說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論

包头市| 台南县| 涡阳县| 松桃| 江安县| 宁陕县| 新巴尔虎左旗| 故城县| 呼玛县| 岱山县| 黄浦区| 涪陵区| 札达县| 环江| 元谋县| 兰考县| 姜堰市| 桑植县| 游戏| 鄂托克旗| 孝感市| 公安县| 嵊泗县| 乐山市| 临安市| 库尔勒市| 加查县| 当涂县| 临安市| 白河县| 隆德县| 西华县| 新泰市| 西丰县| 辛集市| 永城市| 津市市| 淅川县| 阳信县| 麟游县| 克拉玛依市|