tl;dr: HTTP-запрос к URL работает через Chrome и Firefox, но не работает при использовании curl
.
Подробности:
Моя компания использует MediaWiki для внутренней вики-страницы. Мое приложение успешно использовало cURL для получения информации о страницах с помощью этой команды:
curl -s -k -u "username:password" "https://wiki.intranet/mainwiki/api.php?action=query&titles=SomePage&prop=info&format=xml"
Однако ИТ-отдел недавно изменил вики, чтобы использовать какую-то систему единого входа. Если я сейчас запрошу этот URL-адрес, я получу серию перенаправлений HTTP 302, проходящих через следующие местоположения:
/sso?request_uri=/mainwiki/api.php?action=query&titles=SomePage&prop=info&format=xml
http://wiki.intranet/sso/?request_uri=/mainwiki/api.php%3faction=query&titles=SomePage&prop=info&format=xml
https://wiki.intranet/sso/?request_uri=/mainwiki/api.php%3faction=query&titles=SomePage&prop=info&format=xml
Когда я запрашиваю этот последний URL-адрес с помощью cURL, я получаю от сервера ответ 400 (неверный запрос). С параметром -I
для отображения заголовков, вот он:
> curl -S -k -I -u "username:password" "https://wiki.intranet/sso/?request_uri=/mainwiki/api.php%3faction=query&titles=SomePage&prop=info&format=xml"
HTTP/1.1 400 Bad Request
Date: Wed, 29 Apr 2015 20:47:49 GMT
Server: Apache/2.2.3 (CentOS)
Connection: close
Content-Type: text/html; charset=iso-8859-1
Однако, когда я запрашиваю тот же URL-адрес с помощью Google Chrome, я вижу нужные мне результаты!
Как получить информацию с помощью curl
?
Изменить: когда я запрашиваю исходный URL-адрес с помощью Firefox, он также выполняет те же перенаправления, а затем показывает мне два статуса 401 (требуется авторизация). Когда я заполняю имя пользователя/пароль в Firefox, он проводит меня через другое перенаправление обратно к исходному URL-адресу, и в этот момент он получает ответ со статусом 200 с XML, который я хочу .
&
на%26
на случай, если сервер Apache, обрабатывающий запрос, каким-то образом захлебнется от этого. Тот же результат 400. - person Phrogz   schedule 30.04.2015