如何使用Electron在具有复杂媒体类型的HTTP帖子中绕过预检?

时间:2018-09-07 12:26:30

标签: http cors electron postman http-method

我需要使用一种特定的媒体类型来使用HTTP终结点,并且该终结点无法处理OPTIONS方法。

我想使用常规浏览器是不可能的,但是我相信使用Electron应该可以实现,因为我可以使用Postman进行相同的POST请求。

我必须使用哪种框架来实现这一目标?

1 个答案:

答案 0 :(得分:1)

我知道了。如果您在Electron中使用Angular,jQuery或任何Javascript,它将使用浏览器的功能,因此,如果POST具有复杂的媒体类型(我就是这种情况),它将也发送OPTIONS预检。

如果您使用Electron的http API,则不会这样做。文档在这里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));

希望这会有所帮助。