У меня возникла проблема с тем, что при использовании 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
.
Есть ли способ, которым яможно улучшить код или что-то?