Я получил это работает. Если вы используете Angular, jQuery или какой-либо Javascript внутри Electron, он будет использовать возможности браузера и, следовательно, также отправит предварительный просмотр OPTIONS, если POST имеет сложный тип носителя, как в моем случае.
Если вы используете http API Electron, он этого не делает. Документация здесь https://electronjs.org/docs/api/client-request
Вот мой угловой код POC, использующий его:
const { net } = require('electron').remote;
const request = net.request(requestApi);
let requestApi = {
method: 'POST',
headers: {
'Content-Type': 'custom complex media type here',
'Authorization': 'Bearer ' + accessToken // if api is secured
},
protocol: 'https:',
hostname: 'hostname.com',
port: 443,
path: '/api/path/to/method'
};
request.on('response', (response) => {
console.log(`STATUS: ${response.statusCode}`);
resolve(response);
response.on('error', (error) => {
console.log(`ERROR: ${JSON.stringify(error)}`);
reject(error);
})
});
request.end(JSON.stringify(usageData));
Надеюсь, это поможет.