当前位置: 首页 > 面试题库 >

PHP cURL可以在单个请求中检索响应标头和正文吗?

堵昊焱
2023-03-14
问题内容

有什么方法可以使用PHP获取cURL请求的标头和正文?我发现这个选项:

curl_setopt($ch, CURLOPT_HEADER, true);

将返回 正文和标头 ,但随后我需要对其进行解析以获取正文。有什么方法可以使两者更实用(和更安全)?

请注意,对于“单个请求”,我的意思是避免在GET / POST之前发出HEAD请求。


问题答案:

一种解决方案发布在PHP文档注释中:http : //www.php.net/manual/en/function.curl-
exec.php#80442

代码示例:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
// ...

$response = curl_exec($ch);

// Then, after your curl_exec call:
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);

警告: 如以下注释中所述,当与代理服务器一起使用或处理某些类型的重定向时,这可能并不可靠。@Geoffrey的答案可能会更可靠地处理这些问题。



 类似资料:
  • 问题内容: 如何检索请求的响应标头?以下是我提出的要求。 提前致谢! 问题答案: 如果响应为类型,则可以从获取标头。 因此,当您使用Alamofire responseJSON时,可以像这样访问NSHTTPURLResponse属性: 正如苹果文件所说: 包含所有HTTP标头字段的字典,该字段作为服务器响应的一部分收到。通过检查此词典,客户端可以看到HTTP服务器返回的“原始”标头信息。 该词典中

  • 我试图找出一个跨领域的API问题。我有一个用Sencha Touch 2.3.1创建的应用程序,它使用Ajax从远程服务器获取数据。我面临的问题是,所有针对本地服务器的Ajax请求在响应中并不包含所有的头。在远程服务器上,一切正常,标题也正常。 以下是两个打印件,显示了每个服务器单独发送和接收的标头 1 -从本地主机发送和接收的头(http://local.api - vhost) 收到的邮件头:

  • 主要内容:1 HTTP Request Header请求头,2 HTTP Response Header 响应头本文列出了日常开发中常见的请求头和响应头,以供大家参考。 1 HTTP Request Header请求头 Header 说明 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html  Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5  Accept-Encoding

  • 我使用Java和Apache CXF为AngularJS(单页web站点)编写后端。在REST服务中,我需要访问http请求的头(即参数和cookies),也需要访问响应头(即参数和cookies)。其主要原因是安全性、身份验证目的和会话管理。这些都是重要的原因。

  • 问题内容: 我想在继续执行正文之前检查请求的标头是否包含某个标头。例如,我要检查标题中是否包含multipart / form- data 。如果不是,则无需继续上载通常对于文件上载而言很大的多部分主体。 Servlet是否允许您执行此操作?我尝试在Google上随机搜索,但是没有运气。这是我在servlet中尝试的代码,但是在调用此方法之前,它仍然继续接收主体。似乎在调用servlet之前已完全

  • 我试图记录应用程序中的每个传入请求和传出响应。我正在使用jee 6,所以我没有ContainerRequestFilter和ContainerResponseFilter类。所以我决定用滤镜。 我用@WebFilter(“/*”)注释了一个类,并实现了Filter接口。我成功地读取了请求头和请求正文。我也很难阅读响应标题和响应正文。下面是代码片段 MyHttpServletResponse seW