1. ホーム
  2. php

[解決済み] PHP の cURL は、一度のリクエストでレスポンスヘッダーとボディーの両方を取得できますか?

2022-03-14 03:20:53

質問

PHPを使用して、cURLリクエストのヘッダーとボディの両方を取得する方法はありますか?私はこのオプションを見つけました。

curl_setopt($ch, CURLOPT_HEADER, true);

が返されることになります。 本文とヘッダー しかし、ボディを取得するためにパースする必要があります。もっと使いやすい(そして安全な)方法で両方を取得する方法はないでしょうか?

なお、quot;single request"とは、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_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 の回答の方がより確実に処理できるかもしれません。