
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/>