почему вызов curl из execSync в Node.js завершается неудачно, а прямой запуск точно такой же команды работает? - PullRequest
0 голосов
/ 19 октября 2019

У меня возникла проблема с тем, что при использовании execSync в файле node.js он не работает так, как непосредственно вводит команду в оболочке.

Вот моя проблема:

Iиспользуйте curl, чтобы запросить некоторые данные с сервера, и мне нужно сделать это с помощью куки-файла, потому что существует требование входа в систему.

Легко обрабатывать процесс входа в систему и получить куки-файл, но этостранно, что использование cookie с curl в файле node.js приведет к «внутренней ошибке» на сервере. И поскольку у меня нет разрешения на изменение кода сервера, я ищу справку о разнице в вызове curl в Node.js и прямом использовании curl.

Воткод:

var command = 'curl --cookie cookie.txt ' + getURL();
console.log(command);
// output: curl --cookie cookie.txt http://example.com/getdata
var result = child_process.execSync(command).toString();
// will cause an internal error and the "result" is an error-reporting page.

Непосредственно вызывая это в оболочке:

curl --cookie cookie.txt http://example.com/getdata

Все работает, я получил нужные данные.

Я попытался найти несколько графиков,например, изменив код на:

var command = 'curl --cookie cookie-bad.txt ' + getURL();

Я поместил неправильный файл cookie в cookie-bad.txt, я получу результат "Вы не авторизованы".

Так что необходимоможет быть что-то не так с:

отправкой куки на сервер для запроса некоторых данных с помощью curl , запущенного внутри скрипта nodejs с execSync.

Есть ли способ, которым яможно улучшить код или что-то?

1 Ответ

0 голосов
/ 19 октября 2019

Какая у вас версия Node.js? У меня нет проблем с 10.16.0.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...