Назад | Перейти на главную страницу

curl получает 302 или что-то в этом роде, странно

У меня есть следующая команда curl

curl -X POST -w "\nRESULT CODE:%{http_code}\n" --insecure --header "Content-Type:application/json" --user robot-midc:1ZSXM7 -d @table.json http://databus.nrel.gov/api/registerV1

и я получаю следующий ответ

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/1.2.4</center>
</body>
</html>

хммм, как мне проверить фактический http-код, был ли это 302, поскольку в документах curl утверждается, что они следуют перенаправлениям, поэтому я не уверен, что происходит?

спасибо, Дин


хммм, может это ошибка в том, что curl не следует перенаправлению с http на https, как это делают браузеры ???? Моя проблема заключалась просто в том, что балансировщик нагрузки всегда перенаправляет на https, и у меня там был http ... так странно, было бы неплохо, если бы curl выдавал лучшую ошибку, поскольку он не перенаправляет на https (т.е. не выполняет все перенаправления, как указано в документации).

Добавить -v curl, чтобы увидеть фактические ответы заголовка.
И по умолчанию он не следует перенаправлениям, добавьте -L также следовать перенаправлениям, но (со страницы руководства):

When authentication is used, curl only sends its credentials  to  the
initial  host.  If a redirect takes curl to a different host, it
won't be able to intercept the user+password. See  also  --location-trusted
on how to change this. 

Проходить -L к cURL и он будет следовать за 302.