html — ошибка HTTP-кода 302 при запросе URL через PHP Curl

Я получил сообщение об ошибке 302 при запросе URL через PHP curl_exec, но получил код 200, когда это делается вручную. Какая может быть разница, которая отличает результат?

Предположим, у меня есть следующий код на сервере:

$url = "http://localhost/circle/my_request/susan?confirm_key=c429d674e36ffe1a4f87fd5a17a0200dcfff0884e8bb3801d2a7d559dcc8d8cd1416295160";
$ch = @curl_init($url);
@curl_setopt($ch, CURLOPT_HEADER, true);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
@curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Circle)");
@curl_setopt($ch, CURLOPT_TIMEOUT,60);
$s = @curl_exec($ch);
$curl_info = @curl_getinfo($ch);
$http_code = $curl_info['http_code'];

В этом случае $ http_code == 302 или запрошенный URL-адрес перенаправляется. Но когда я поместил URL-адрес в браузер вручную, он не сделал перенаправление и взял меня в нужное место.

Я что-то пропустил? Почему эти 2 запроса получаются по-разному?

заранее спасибо

————Дополнительная информация—-

Привет, я перезапустил скрипт с параметром CURLOPT_FOLLOWLOCATION, установленным в true, и я получил следующий вывод:

HTTP/1.1 302 Found Date: Tue, 18 Nov 2014 14:36:37
GMT Server: Apache/2.4.4 (Win64)
PHP/5.4.12 X-Powered-By: PHP/5.4.12
Set-Cookie: PHPSESSID=92t2db5qalq4ajie0ols03hik6;
path=/; HttpOnly Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate,
post-check=0, pre-check=0 Pragma: no-cache X-Account-Management-Status: none

Location: http://somehost.com/circle Content-Length: 0

Content-Type: text/html HTTP/1.1

301 Moved Permanently Date: Tue, 18 Nov 2014 14:36:37
GMT Server: Apache/2.4.4 (Win64)

PHP/5.4.12 Location: http://somehost.com/circle/

Content-Length: 232 Content-Type: text/html;
charset=iso-8859-1 HTTP/1.1 200 OK Date: Tue,
18 Nov 2014 14:36:37 GMT Server: Apache/2.4.4 (Win64)
PHP/5.4.12 X-Powered-By: PHP/5.4.12
Set-Cookie: PHPSESSID=hk02sg1327eq78khbka0sf6pk6;
path=/; HttpOnly Expires: Thu, 19 Nov 1981 08:52:00
GMT Cache-Control: no-store, no-cache, must-revalidate,
post-check=0, pre-check=0 Pragma: no-cache X-Account-Management-Status: none
Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8

Я не уверен, что это говорит, но я предполагаю, что это было перенаправлено на http://somehost.com/circle затем к http://somehost.com/circle. Это правильно?

0

Решение

Может быть использование сценария перенаправления для проверки куки или других функций.

  1. Вы можете увидеть URL перенаправления в $s выход. Просто вставьте echo $s; до конца вашего сценария.

  2. Также вы можете установить CURLOPT_FOLLOWLOCATION, и тогда curl будет переворачиваться при перенаправлении в автоматическом режиме.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]