Armadilhas ao configurar o servidor proxy do Axios

Armadilhas ao configurar o servidor proxy do Axios


As requisições do axios têm uma propriedade proxy que pode ser usada para proxy no Node.js. No entanto, não é perfeita e falhará ao fazer proxy de requisições HTTPS, então é melhor não usá-la.

import axios from "axios";

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

Ao fazer requisições HTTPS através de um proxy HTTP, você precisa primeiro enviar um método CONNECT para notificar o servidor proxy para estabelecer um túnel TCP para o servidor de destino. Caso contrário, o servidor proxy apenas enviará requisições não criptografadas para a porta 443 do servidor de destino, o que falhará. Se você não tem certeza do que estou falando, pode verificar este artigo.

Para uma implementação correta, você pode consultar o comando curl. Configure um proxy HTTP (127.0.0.1:1025) usando Node.js, então use o comando curl para enviar uma requisição HTTPS. Os logs do servidor proxy mostrarão que ele primeiro envia um método CONNECT.

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