2014-09-25 4 views
0

Мне нужно получить заголовок местоположения. Из того, что я прочитал, что это должно быть так же просто, какCURLOPT_HEADER возвращает 401

curl_setopt($c, CURLOPT_HEADER, true); 
curl_setopt($c, CURLOPT_FOLLOWLOCATION, false); 

Если я не включают в себя эти два варианта, завиток запрос работает нормально, но я не в состоянии получить заголовок расположения.

Если у меня есть эти два варианта, то я получаю ошибку 401.

Возвращаемое место должно быть URL-адресом, для которого требуется дополнительный логин. Что я делаю не так?

Если это имеет значение, я делаю PUT.

Обновление: Оказывается, я смотрел слишком много на деревья и не хватало в лесу. При создании информации, необходимой для ответа на этот вопрос, я понял, что проблема была на самом деле с вызовом до этого вызова.

Перед началом работы мне нужно получить токен сеанса. Поскольку я не разбирал заголовки при получении токена сеанса, я получал пустой токен сеанса, который приводил к 401 для PUT.

+0

заголовки Ответные ** включены ** к результату 'curl_exec' при установке' CURLOPT_HEADER' вариант. Поэтому, если вы хотите получить ответный заголовок, вы должны извлечь его из результата, используя 'substr() 'и' curl_getinfo (CURLINFO_HEADER_SIZE) ' – hindmost

+0

10.4.2 * 401 Неавторизованный - для запроса требуется аутентификация пользователя *. [Ссылка] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) –

ответ

0

HTTP-заголовки ответов: прилагается к результату curl_exec при установке CURLOPT_HEADER. Поэтому, если вы хотите получить заголовки ответов, вам нужно извлечь их из результата, используя substr() и curl_getinfo(CURLINFO_HEADER_SIZE).

Вот пример:

$c = curl_init(); 
// setting options including CURLOPT_HEADER 
// ... 
$result = curl_exec($c); 
$info = curl_getinfo($c); 
curl_close($c); 
// extracting headers from result: 
$n = $info['header_size']; 
$headers = rtrim(substr($result, 0, $n)); 
$content = substr($result, $n); 
+0

Да, но когда я выдаю $ result, это ошибка 401, если я устанавливаю CURLOPT_HEADER. Если я не устанавливаю CURLOPT_HEADER, то PUT работает нормально, но поскольку я не установил CURLOPT_HEADER, это местоположение не включено. –

+0

Вы должны предоставить полный код, который вы используете с CURL. В противном случае я не могу вам помочь – hindmost

+0

Оказывается, я смотрел слишком много на деревья и не хватало в лесу. При создании информации, необходимой для ответа на этот вопрос, я понял, что проблема была на самом деле с вызовом до этого вызова. Перед PUT мне нужно получить токен сеанса. Поскольку я не разбирал заголовки при получении токена сеанса, я получал пустой токен сеанса, который приводил к 401 для PUT. Отмечено это как ответ, так как проблема заключалась в извлечении заголовка. Спасибо за помощь! –

Смежные вопросы