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);
ファイ。