Я создал приложение Vue и добавил в него Electron. Я использовал Vue CLI Plugin Electron Builder
В режиме разработки все нормально, все запросы к API падают на адрес который прописан у меня в vue.config.js:
proxy: {
'^/api': {
target: 'http://my-api:3000',
changeOrigin: true
},
},
Например, запрос Axios POST /api/open_session/ сменяется http://my-api/api/open_session по мере необходимости.
Когда я создаю проект, он создает протокол app:// для открытия файла index.html.
Но он также делает все пути URL-адресов, начинающиеся с app://, включая запросы API.
Мой background.js:
if (process.env.WEBPACK_DEV_SERVER_URL) {
// Load the url of the dev server if in development mode
await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL)
if (!process.env.IS_TEST) win.webContents.openDevTools()
}
else {
createProtocol('app');
// Load the index.html when not in development
win.loadURL('app://./index.html');
}
Я хочу, чтобы эти пути были направлены на мой API, а все мои файлы открывались как обычно (через протокол приложения)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ну, это было долгое время, и я справился с этим самостоятельно. Однако вот ответ, который я нашел на некоторых форумах для тех, кто борется с той же проблемой:
Во-первых, я изменил свой vue.config.js:
proxy: {
'^/api': {
target: 'http://127.0.0.1:3000',
changeOrigin: true
},
},
Затем я внес некоторые изменения в main.js — добавил переменную сеанса:
const sesh = session.defaultSession.webRequest.onBeforeSendHeaders({
urls: ['*://*/*']
}, (details, callback) => {
// eslint-disable-next-line prefer-destructuring
details.requestHeaders.Host = details.url.split('://')[1].split('/')[0]
callback({
requestHeaders: details.requestHeaders
})
})
который определяет поведение приложения при вызове запросов. Кроме того, я добавил значение сеанса в webPreferences:
const win = new BrowserWindow({
width: 1500,
height: 700,
title: "Title",
webPreferences: {
session: sesh,
nodeIntegration: true,
webSecurity: false
}
})
И, наконец, загрузите мой index.html через протокол приложения.
createProtocol('app');
win.loadURL('app://./index.html');
В результате все мои запросы были перенаправлены на мой сервер.
Простите меня за незнание исходника, если это читает автор кода, вы обязательно можете отметить себя в комментариях :)