在开发客户端javascript应用程序时,开发人员网络面板对于调试网络问题非常有用:
创建NodeJS应用程序的开发人员如何监控从nodejs应用程序到http / https服务器的网络流量?例如,如何调试以下网络流量?
var http = require('http');
var req = http.request ...
req.write ...
req.send()
我的代码正在拨打第三方https服务器,因此我无法使用wireshark或类似的数据包嗅探工具。
有关详细信息,我要调查的问题是here。
编辑:
这里有类似的问题,询问如何用其他语言做同样的事情:
答案 0 :(得分:8)
使用外部HTTP调试工具。您的选择包括:
启动其中一个,告诉他们在哪里路由流量,并将应用程序指向该调试代理而不是真实服务器。
答案 1 :(得分:4)
我来到这个问题寻找类似的东西,但我使用request
包。在这种情况下,您需要做的就是在代码中包含以下行:
require('request-debug')(request);
(确保安装了request-debug包)
这会将所有请求数据打印到控制台。
答案 2 :(得分:0)
我知道它并不漂亮,但您可以随时在请求调用内的控制台上输出响应标头的内容:
var req = https.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
res.on('data', function(d) {
process.stdout.write(d);
});
});
然而,你的原始问题不是关于服务器端的问题,而是节点代码本身的问题,因此这在这里没有多大用处。
答案 3 :(得分:0)
答案 4 :(得分:0)
如果您只需要查看传出流量的URL及其原因,则可以使用debugging-aid
npm i -D debugging-aid
node --require debugging-aid/network app.js
结果控制台输出可能如下所示:
[aid] network, outgoing to: http://example.com/
stack: at Agent.createSocket (_http_agent.js:234:26)
at Agent.addRequest (_http_agent.js:193:10)
at new ClientRequest (_http_client.js:277:16)
at Object.request (http.js:44:10)
at Request.start (myapp-path/node_modules/request/request.js:751:32)
at Request.end (myapp-path/node_modules/request/request.js:1511:10)
[aid] network, outgoing to: http://example.com/
stack: at Agent.createSocket (_http_agent.js:234:26)
at Agent.addRequest (_http_agent.js:193:10)
at new ClientRequest (_http_client.js:277:16)
at Object.request (http.js:44:10)
at get (myapp-path/node_modules/got/source/request-as-event-emitter.js:234:22)
at Immediate.<anonymous> (myapp-path/node_modules/got/source/request-as-event-emitter.js:305:10)
免责声明:
我是debug-aid的作者
在debug-aid版本为0.2.1时写了这个答案
答案 5 :(得分:0)
使用 HTTP 工具包。通过执行在 macOS 中安装:
brew install --cask http-toolkit
它将提供有关如何拦截 node、chrome 等的说明。