axiosで送信元IPアドレスをIPv4で指定したい場合

めっちゃ小ネタなんですが、備忘録として書いておく。

状況としては、Azure Functionをローカルで動かしてたときに、テストを自動化したくてaxiosで検証用アプリを作ってた時の話。

ブラウザだとうまくいく(この時は400エラーを返すようにしてたけどw)、axiosだと何故かECONNREFUSEDを返すと。

wiresharkで見てみると、ブラウザは127.0.0.1でアクセスしてたんだけど、axiosは::1でアクセスしようとしてることがわかった。

なんで、この状況になるのかよくわかってないけど、axiosはIPv6を優先してるのかな...?(まあ、Azure FunctionがIPv6でのアクセスに対応してないってのが問題かもしれんが、クラウド側の事情とかあるとそうもいかんのか?)

とりあえず、axiosにIPv4を強制させたいときのコード

const agent = new http.Agent({ family: 4 });
const instance = axios.create({ httpAgent: agent });
await instance.post(info.host, request);

ファイ。