Axios配置代理服务器的坑

Axios配置代理服务器的坑


axios request 有 proxy 属性,在 nodejs 上可以代理。但它并不完善,在代理 HTTPS 请求的时候会出错,不要使用。

import axios from "axios";

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

HTTPS 请求通过 HTTP 代理时,需要先发送 CONNECT 方法,通知代理服务器建立到目标服务器的 TCP 隧道。否则的话,代理服务器只会发送未加密的请求到目标服务器的 443 端口,会出错。如果你不清楚我在说什么,可以看一下这篇文章

正确的实现可以参考 curl 命令。随便用 nodejs 建立一个 HTTP 代理 (127.0.0.1:1025),然后使用 curl 命令发送一个 HTTPS 请求。代理服务器的日志会显示它首先发送的是 CONNECT 方法。

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