node.js - 你如何在 Electron 应用程序中处理 CORS?

标签 node.js proxy cors electron reverse-proxy

我正在构建一个 Electron 应用程序,需要在 API 提供商未启用 CORS 的情况下调用 API。通常建议的解决方案是使用反向代理,这在通过使用 Node 和 cors-anywhere 在本地运行时很容易做到,如下所示:

let port = (process.argv.length > 2) ? parseInt (process.argv[2]) : 8080; 
require ('cors-anywhere').createServer ().listen (port, 'localhost');

然后可以将应用配置为通过 localhost:8080 上的反向代理代理所有请求。

所以,我的问题是:

  1. 是否可以在 electron 应用程序中使用 node 和 cors-anywhere 来创建反向代理?我不想强制应用程序调用远程服务器。

  2. 在 Electron 应用程序中是否有更好或标准的方法来执行此操作?我假设我不是第一个遇到 CORS 问题的人。 :)

最佳答案

在发送请求之前使用 webRequest.onBeforeSendHeaders 覆盖 header

const filter = {
  urls: ['*://*.google.com/*']
};
const session = electron.remote.session
session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback) => {
    details.requestHeaders['Origin'] = null;
    details.headers['Origin'] = null;
    callback({ requestHeaders: details.requestHeaders })
});

将这些代码放在渲染器进程中

关于node.js - 你如何在 Electron 应用程序中处理 CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51254618/

相关文章:

Kubernetes 上的 Nginx 代理

JQuery、CORS 和自定义响应 header

cors - SAM 应用程序部署给出预检错误,但如果我在 aws apigateway 控制台中创建 OPTIONS 方法,我的预检会通过

node.js - 错误 TS2430 : Interface 'WebGLRenderingContext' incorrectly extends interface 'WebGLRenderingContextBase'

python - 在带有 urllib2 的 Python 中使用 cookie 和代理

php - 代理网站中的相对 URL 不起作用

http - 浏览器不在 Origin header 中发送 FQDN

javascript - 如何在 Node.js 中关闭文件对话框?

javascript - 我可以在nodejs中的javascript路径中传递变量吗?我正在使用查询方法

javascript - zombie JS : intermittently crashes when called repeatedly from a for loop