#php #cookies #curl #http-post
#php #файлы cookie #curl #http-post
Вопрос:
Если я загружу файл cookie, я смогу перейти на страницу, для которой требуются файлы cookie, вот так:
$cookie = ".ASPXAUTH=Secret";
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
Здесь проблем нет, я могу запустить curl_exec
и увидеть страницу, для которой требуются файлы cookie.
Если я также хочу отправить некоторые данные post, я могу сделать это следующим образом:
$data = array(
'index' => "Some data is here"
);
$cookie = ".ASPXAUTH=Secret";
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
Я настроил скрипт дампа на своем локальном сервере, чтобы проверить, работает ли он. Если я отправлю только файл cookie, я смогу увидеть его в заголовках http, и если я отправлю только данные post, я смогу увидеть данные post.
Когда я отправляю оба файла, я вижу только файл cookie.
Почему?
Комментарии:
1. ммм, как выглядит скрипт, которому вы отправляете эти запросы curl?
2. @Neal В настоящее время я размещаю только в скрипте дампа на локальном сервере. Скрипт находится здесь pastebin.com/37mDNNHr
3. Каково содержимое php://input? Возможно, содержимое HTTP не обрабатывается должным образом в переменной $ _POST в зависимости от того, как curl отправляет тип содержимого.
Ответ №1:
Я, наконец, нашел решение.
Если я вручную установлю файл cookie, используя пользовательский http_header, я смогу получить желаемые результаты.
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie:.ASPXAUTH=secretData"));
Даже пробовал на разных серверах — те же результаты.