通过Fiddler发送NodeJs Axios请求

mic*_*ael 6 fiddler node.js axios

我正在使用Windows + Visual Studio代码来开发Node JS API。我正在使用Axios将来自NodeJ的其余请求提交给第三方API。

我想检查通过Fiddler从我的节点服务器发送到第三方后端的数据包,但是我一直很难让Axios通过127.0.0.1端口8888进行代理。

理想情况下,将其设置为打开/关闭代理将是一个简单的全局变量。我尝试过的是:

axios.defaults.proxy = { host: "127.0.0.1", port:8888}

axios.defaults.proxy = { host: "127.0.0.1", port:8888, protocol: "http"}

axios.post(url: <api>, {post:data}, {proxy: {host: "127.0.0.1", "8888"} });
Run Code Online (Sandbox Code Playgroud)

以及以上的许多不同变体。启用代理后,它将无法完成请求。

小智 4

您尝试访问的服务器是否正在使用httpsaxios这是一个他们似乎很难解决的问题。

允许您通过 Fiddler 进行代理的解决方法是使用 HTTPS-over-HTTP 隧道。Jan Molak 写了一篇关于通过代理向服务器发送请求的场景的好文章。通过 Fiddler 运行请求时,以下代码对我有用:httpshttp

const axios = require('axios');
const tunnel = require('tunnel');

const axiosInstance = axios.create({
  httpsAgent = tunnel.httpsOverHttp({
    host: '127.0.0.1',
    port: 8888,
  }),
  proxy: false,
});

axiosInstance.post(/* ... */);
Run Code Online (Sandbox Code Playgroud)