0

重複の可能性:
PHP で相対パスを指定して curl を使用することは可能ですか?

相対 URL に従うスクリプトを機能させるために何時間も試みてきました。

問題の簡単な要約。

URL をたどるオプションを使用していFOLLOWLOCATIONますが、URL が次の場合:

/redirectPage.html

curl は次のようになります。

localhost/redirectPage.html

これが私のコードです:

$ch = curl_init();

//set options
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTP_VERSION, 'CURL_HTTP_VERSION_1_1');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);


$content = curl_exec($ch);


curl_close($ch);

私が見つけたいくつかの「解決策」には、DOM ドキュメントを解析し、href 属性を絶対 URL に置き換えることが含まれますが、引き続き を使用できる解決策を探していますFOLLOWLOCATIONFOLLOWLOCATIONcurl でベース URL を設定する方法、またはオプションに続くリダイレ​​クトされた URL をキャプチャしてそれに文字列を追加する方法はありますか?

助けてください。

4

1 に答える 1

0

FOLLOWLOCATION応答ヘッダーcURLフォローできます。ただし、相対 URL をダウンロードすることはできません。Location: /redirects

URL を自分で解決する必要があります。相対 URL を解決するには、参照として使用する絶対 URL が必要です。しかし、どこでそれを cURL に提供しますか? しません、できません、すべきではありません。

URL をサニタイズして解決するのはあなたの仕事です。HTTP クライアントのものではありません。cURL は相対を解決しLocation: headersます。しかし、決して存在しなかったかもしれないページの以前の記憶に基づく相対 URL 要求ではありません。

于 2012-11-01T19:47:28.743 に答える