这里有很多问题,询问如何将cURL响应的标题与正文分开,以及我看到的两种方法:
使用标题的长度和substr()
使用explode("\r\n\r\n", $response, 2)
但是,第一种方法在使用代理服务器时不起作用,而第二种方法在服务器执行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/
开头(我认为不太可能),那么这将导致一个重大问题。
有没有比我目前想要追求的解决方案更好的解决方案?
作为旁注,我这样做是因为我需要检索响应主体和标题。