Fallstricke bei der Konfiguration des Axios-Proxy-Servers

Fallstricke bei der Konfiguration des Axios-Proxy-Servers


Axios-Anfragen haben eine proxy-Eigenschaft, die in Node.js für Proxying verwendet werden kann. Sie ist jedoch nicht perfekt und schlägt fehl, wenn HTTPS-Anfragen über den Proxy geleitet werden. Daher ist es am besten, sie nicht zu verwenden.

import axios from "axios";

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

Bei HTTPS-Anfragen über einen HTTP-Proxy muss zunächst eine CONNECT-Methode gesendet werden, um den Proxy-Server zu benachrichtigen, dass ein TCP-Tunnel zum Zielserver aufgebaut werden soll. Andernfalls sendet der Proxy-Server nur unverschlüsselte Anfragen an Port 443 des Zielservers, was fehlschlägt. Wenn Sie nicht sicher sind, wovon ich spreche, können Sie diesen Artikel lesen.

Für eine korrekte Implementierung können Sie sich am curl-Befehl orientieren. Richten Sie einen HTTP-Proxy (127.0.0.1:1025) mit Node.js ein und verwenden Sie dann den curl-Befehl, um eine HTTPS-Anfrage zu senden. Die Proxy-Server-Logs zeigen, dass zuerst eine CONNECT-Methode gesendet wird.

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