Сервер всегда отвечает 200 с curl, но выдает сообщения об ошибках при доступе в браузере - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь связаться со сторонним сервером, используя curl.

Система аутентификации выглядит следующим образом:

  1. Используйте учетные данные для запроса cookie
  2. Набор печенья
  3. Делать запросы

Само по себе это не было проблемой, и я могу делать запросы и т. Д., Но все, что я посылаю, сервер всегда отвечает 200, даже если я отправляю неверный формат данных. Если я поместил тот же URL в браузер, он возвращает сообщения об ошибках о недопустимом формате.

Кто-нибудь знает, почему это может быть? Заранее спасибо,

function go($url,$postvars=null)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookie_.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookie_.txt');    
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

            curl_setopt($ch, CURLOPT_POST, 1); 
            curl_setopt($ch,CURLOPT_POST,count($postvars));
            $postfields = http_build_query($postvars);
            curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);    
     curl_exec($ch);
     curl_close($ch); 
 }

 go($url,$login_array);  //login=>'',pass=>''
 go($url,$some_request_array);

1 Ответ

1 голос
/ 23 января 2012

Одна очень вероятная возможность - ошибка в коде сервера, который означает, что он отправляет 200 состояний со своими сообщениями об ошибках. Следовательно, хотя в браузере это будет сообщение об ошибке, потому что это то, что находится в теле, оно все равно будет «успешным». Поместите перехват (сеть firebug, fiddler и т. Д.) На доступ к браузеру и посмотрите, каково состояние.

Если это так, у вас есть два варианта:

  1. Попросите сторону, ответственную за сервер, исправить это.
  2. Выполните синтаксический анализ сообщения об ошибке самостоятельно, а затем обработайте его как условие ошибки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...