当存在多个标头时,如何将cURL标头与主体分开

时间:2014-04-08 00:50:39

标签: php curl

这里有很多问题,询问如何将cURL响应的标题与正文分开,以及我看到的两种方法:

  1. 使用标题的长度和substr()

  2. 使用explode("\r\n\r\n", $response, 2)

  3. 但是,第一种方法在使用代理服务器时不起作用,而第二种方法在服务器执行302重定向并且设置了FOLLOW_LOCATION时不起作用。

    因此,我的以下代码不足,因为其他标题最终会出现在$body

    $data      = explode("\r\n\r\n", $response, 2);
    $header    = $data[0];
    $body      = $data[1];
    

    我目前的想法是将上面的代码放在循环中,并在每次迭代后检查$body的第一部分是否为HTTP,因为标题总是如下所示:

    HTTP/1.1 100 Continue
    HTTP/1.1 302 Moved Temporarily
    HTTP/1.1 200 OK
    

    如果$body的第一部分是HTTP/,那么我会继续迭代,否则我会知道标题已全部与正文分开。然而,我看到的缺点是,如果身体以HTTP/开头(我认为不太可能),那么这将导致一个重大问题。

    有没有比我目前想要追求的解决方案更好的解决方案?

    作为旁注,我这样做是因为我需要检索响应主体和标题。

0 个答案:

没有答案