Axiosプロキシサーバー設定の落とし穴

Axiosプロキシサーバー設定の落とし穴


axios リクエストにはproxyプロパティがあり、Node.js でプロキシとして使用できます。しかし、HTTPS リクエストのプロキシ時に問題が発生するため、使用は推奨されません。

import axios from "axios";

axios.get("https://example.com", {
  proxy: {
    host: "127.0.0.1",
    port: 7890,
  },
});

HTTPS リクエストを HTTP プロキシ経由で行う場合、まず CONNECT メソッドを送信して、プロキシサーバーにターゲットサーバーへの TCP トンネルを確立するよう通知する必要があります。そうしないと、プロキシサーバーはターゲットサーバーの 443 ポートに暗号化されていないリクエストを送信するだけで、エラーが発生します。もし私の説明が分かりにくい場合は、この記事を参照してください。

正しい実装については、curl コマンドを参考にすることができます。Node.js で HTTP プロキシ(127.0.0.1:1025)を設定し、curl コマンドを使用して HTTPS リクエストを送信してみてください。プロキシサーバーのログには、最初に CONNECT メソッドが送信されることが表示されます。

curl -v -X POST -x 127.0.0.1:1025 <https://cloudflare.com/>