如何在节点/npm 中创建仅在应用程序内部的服务器或修改来自传出请求的任何响应主体

How to create a server that is only internal to the app in node / npm or modify any response body from outgoing requests

我正在尝试开发一个节点应用程序,需要一个只能供应用程序内部使用的服务器。

我曾尝试在不监听端口的情况下实例化服务器,但从那时起就无法对其执行任何操作:

let http = require("http");
http.createServer(function (req, res) {
    // custom code
})

此应用程序是使用 NWJS 构建的,我需要拦截任何传出请求(包括文件资源;CSS、JS、图像等)并修改响应,但我没有成功除非我为此目的使用服务器。

问题是可以在任何浏览器上打开该服务器,我只希望它仅在应用程序内部使用或以其他方式拦截来自应用程序的传出请求,以便可以修改响应正文。

我已经尝试过 Keith 关于使用 service worker 拦截请求的建议,但在我的情况下,我无法将 service worker 从本地环境加载到实时环境中(例如,运行 中的本地 sw 文件Whosebug 页面),因此该建议到此为止。

Stdob 关于使用代理的建议最终变得多余,而且比我最初的尝试更麻烦。

最后我按照最初的尝试进行了如下操作:

  • 使用chrome.webRequest.onBeforeRequest (Chrome API) 和本地节点服务器。

  • 服务器是使用任意端口创建的,以降低访问已使用端口的风险。

  • chrome API 将所有连接重定向到本地服务器(例如 url: http://127.0.0.1:5050),然后服务器将处理根据需要请求,返回请求的文件修改或完整。

  • 最后一步,添加一个唯一的header,具有只有应用程序知道的唯一值,这样就无法从应用程序外部访问服务器。

这不是最好的解决方案,理想情况下我更愿意使用类似 Firefox 的 webRequest.filterResponseData,但在 Chrome 实现之前,必须这样做。