electron的渲染進程使用axios時被csp安全攔截的解決方案
1、問題出現場景
腳手架用的是electron-vite,渲染進程是vue3+pinia+vue-router,http請求是使用的axios,在發起請求時發現控制臺報csp問題


2、原因分析
csp其實就是跨域問題,不支持非同源的資源訪問,以往開發普通的vue項目時因為有腳手架里的代理,所以不會出現這種問題,而electron沒有現成的代理配置
3、解決方法
這里介紹兩種解決方案
1、最簡單直接的方法是修改渲染進程的html頁面的csp規則,下面是我的大致設置,主要是connect-src,這是http請求的資源策略,保留self同源,另外增加自己具體的接口服務地址。
具體參考文檔https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP

2、第二種是替換axios的默認適配器,在預加載腳本preload里邊引入
![]()
然后用contextBridge暴露給渲染進程
![]()
然后渲染進程里邊在創建axios實例前將它設置為默認http適配器

這樣axios請求就可以發送了,但是由于這是相當于用的node的http請求,所以這種方式下,你在調試渲染進程時在控制臺是F12控制臺是看不到所發出的請求的,對于調試可能會不方便

浙公網安備 33010602011771號