Мне нужно использовать конечную точку HTTP с использованием определенного типа носителя, и эта конечная точка не обрабатывает метод OPTIONS.
Я предполагаю, что это было бы невозможно с использованием обычных браузеров, но я считаю, что это должно быть возможно с помощью Electron, поскольку я могу выполнить тот же запрос POST с помощью Postman.
Какую структуру мне нужно использовать для этого?
Я упомянул почтальона, потому что он был разработан в Electron, поэтому я знаю, что в Electron можно делать все, что я хочу. Конечная точка ожидает настраиваемый медиатип, если я выполняю запрос POST с использованием angular или любой инфраструктуры javascript с использованием обычного браузера, она отправляет предварительный метод OPTIONS, который конечная точка не поддерживает
У меня все заработало. Если вы используете 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.info(`STATUS: ${response.statusCode}`);
resolve(response);
response.on('error', (error) => {
console.info(`ERROR: ${JSON.stringify(error)}`);
reject(error);
})
});
request.end(JSON.stringify(usageData));
Надеюсь это поможет.
Я не голосовал против. Но совсем не понятно, о чем вы спрашиваете. Что ожидает эта конечная точка? Очевидно, не CORS, потому что тогда он будет понимать ОПЦИИ ... используя JavaScript, вы можете сгенерировать практически любой HTTP-запрос ... ничего общего с электроном, и вам не нужен почтальон.