如何使用Electron绕过具有复杂媒体类型的HTTP post中的预飞行?

如何使用Electron绕过具有复杂媒体类型的HTTP post中的预飞行?,http,cors,electron,postman,http-method,Http,Cors,Electron,Postman,Http Method,我需要使用一个使用特定媒体类型的HTTP端点,而该端点不处理OPTIONS方法 我想使用常规浏览器是不可能的,但我相信使用Electron应该是可能的,因为我可以使用Postman执行相同的POST请求 我必须使用什么样的框架才能实现这一点?我让它工作起来了。如果您在Electron中使用Angular、jQuery或任何Javascript,它将使用浏览器的功能,因此,如果文章具有复杂的媒体类型,它也将发送选项预检,这就是我的情况 如果您使用Electron的http API,它不会这样做。文

我需要使用一个使用特定媒体类型的HTTP端点,而该端点不处理OPTIONS方法

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


我必须使用什么样的框架才能实现这一点?

我让它工作起来了。如果您在Electron中使用Angular、jQuery或任何Javascript,它将使用浏览器的功能,因此,如果文章具有复杂的媒体类型,它也将发送选项预检,这就是我的情况

如果您使用Electron的http API,它不会这样做。文件在这里

下面是我使用它的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));

希望这有帮助。

我让它工作起来了。如果您在Electron中使用Angular、jQuery或任何Javascript,它将使用浏览器的功能,因此,如果文章具有复杂的媒体类型,它也将发送选项预检,这就是我的情况

如果您使用Electron的http API,它不会这样做。文件在这里

下面是我使用它的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));

希望这有帮助。

我没有投反对票。但你到底在问什么还不清楚。那个端点期望什么?显然不是CORS,因为这样它就可以理解选项。。。使用JavaScript,您几乎可以生成任何HTTP请求。。。和电子无关,你们也不需要邮递员。我提到邮递员是因为它是用电子开发的,所以我知道用电子做我想做的事情是可能的。端点需要一个自定义媒体类型,如果我使用angular或任何javascript框架使用常规浏览器执行POST请求,它会发送一个端点不支持的飞行前选项方法。但你到底在问什么还不清楚。那个端点期望什么?显然不是CORS,因为这样它就可以理解选项。。。使用JavaScript,您几乎可以生成任何HTTP请求。。。和电子无关,你们也不需要邮递员。我提到邮递员是因为它是用电子开发的,所以我知道用电子做我想做的事情是可能的。端点需要自定义媒体类型,如果我使用angular或任何javascript框架使用常规浏览器执行POST请求,它将发送一个端点不支持的飞行前选项方法