Запрос Axios post с прокси-сервером не работает

#node.js #proxy #axios

#node.js #полномочие #аксиос

Вопрос:

Без прокси это работает

Я никогда раньше не работал с прокси-серверами, поэтому не знаю, на что мне следует обращать внимание… но _currentURL: http://[прокси]/pathToPayments, похоже, выглядит странно. Хотя я понятия не имею, что происходит.

 app.get('/payment', (req, res) =gt; {  const amount = req.body;   const params = new URLSearchParams();  params.append('ssl_merchant_id', MERCHANTID);  params.append('ssl_user_id', MERCHANTUSERID);  params.append('ssl_pin', MERCHANTPIN);  params.append('ssl_transaction_type', 'ccsale');  params.append('ssl_amount', 150);   let axiosConfig = {  headers: {  'Content-Type': 'application/x-www-form-urlencoded',  },  proxy: {  host: FIXIE_URL,  port: 80,  },  };   axios  .post(  'https://api.demo.convergepay.com/hosted-payments/transaction_token',  params,  axiosConfig,  )  .then((response) =gt; {  return response.data;  })  .then((token) =gt; {  console.log(token);  res.redirect(  `https://api.demo.convergepay.com/hosted-payments?ssl_txn_auth_token=${token}`,  );  })  .catch((err) =gt; console.log(err)); });  

введите описание изображения здесь введите описание изображения здесь

Комментарии:

1. Нужно больше объяснений о том, чего вы пытаетесь достичь и каков фактический результат.

2. Я хочу, чтобы пользователь мог нажать на ссылку и перейти на страницу размещенных платежей. Мне приходится использовать прокси-сервер из-за того, что Heroku меняет IP-адреса, и этому сайту платежей требуется внести IP-адреса в белый список. Фиксики-это дополнение, которое Heroku использует для этого. Их документы устарели (с использованием пакета ответов), поэтому мне нужно использовать axios. Прямо сейчас ссылка нажата, и она просто загружается навсегда, и изображения показывают, что я получаю. Удаление прокси-объекта из axiosConfig заставляет его работать на локальном хосте, но мне нужен прокси-сервер для работы.

Ответ №1:

Я написал Фикси по электронной почте об этом. В итоге они обновили свои документы информацией axios из-за того, что то, что они использовали, устарело.

«В частности, что не так в вставленном коде, так это то, что вы не тот хост (вам просто нужно указать имя хоста, а не полный URL-адрес), и вам нужно предоставить учетные данные для аутентификации. Так что что-то вроде этого:

 axios({  method: 'get',  url: 'https://example.com',  proxy: {  protocol: 'http',  host: YOUR_FIXIE_HOST,  port: 80,  auth: {  username: 'fixie',  password: FIXIE_TOKEN  }  } })  .then(function (response) {  // Do something with the response  });  

Ваш хост fixie-это поддомен fixie, без какой-либо информации о протоколе или порте. Так что что-то вроде triathalon.usefixie.com. Ваш токен fixie — это случайная строка после fixie: полного URL-адреса fixie.»