【问题标题】:how to log OUTGOING https requests from node within webstorm如何在 webstorm 中记录来自节点的传出 https 请求
【发布时间】:2012-10-18 22:08:43
【问题描述】:

我正在编写一些调用外部 Web 服务的 node.js 代码,但结果很糟糕。我想记录原始请求和响应,以便进行检查。

事情是这样的:我没有直接使用 http 库,我通过 OAuth 库使用它。

我已经在 oauth 库代码中添加了调试语句,但我不喜欢它。现在看起来我将不得不进入 http 库并开始搞乱它?这不可能是正确的。

如果我在 Windows 上,我会启动 fiddler。一位朋友提到了wireshark,但wireshark告诉我必须安装X11。真的吗?我不会去那个兔子洞的。

然后我尝试了节点检查器,但我认为这是针对服务器代码而不是客户端代码。它说您假设在附加之前启动您的节点进程。好吧,我的节点进程是一个测试用例(誓言),它在开始后不久就结束了......所以那里没有运气。

我想这对于任何堆栈都很难,但天哪,这让我想念 .net!

那么,在将 node.js 用作山狮外部 Web 服务的客户端时,我如何检查网络上发生了什么?

谢谢! 丹

【问题讨论】:

  • 你有没有在这方面找到运气?

标签: node.js https webstorm


【解决方案1】:

出于同样的原因,设法在http/https 请求上安装了一个钩子。

function requestLogger(httpModule){
    var original = httpModule.request
    httpModule.request = function(options, callback){
      console.log(options.href||options.proto+"://"+options.host+options.path, options.method)
      return original(options, callback)
    }
}

requestLogger(require('http'))
requestLogger(require('https'))

【讨论】:

  • 请注意,使用此方法将记录两次 https 请求,因为 https.request() 只是委托给 http.request()。只需将日志添加到“http”,并通过测试“options._defaultAgent”是否存在(在“https.request()”中设置)来猜测协议。
  • options.proto 不足以检测请求是使用 http 还是 https 吗?
  • 我必须在节点 10 中使用 options.url || options.protocol + '://' + options.hostname + options.path,
【解决方案2】:

您可以查看global-request-logger 模块,该模块使用@uiron 提到的相同技术,但更详细。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多