リダイレクト後の最終 URL でクエリ文字列を取得しようとしています。
https://example.com/oauth/auth?user=foo&password=bar
ブラウザで次のようにリダイレクトします。
https://example.com/?secret=8273761838346
リダイレクト後の最終 URL のsecret={some number}部分が必要です。
file_get_contents、 cURL、さらには socket メソッドを使用して、PHP で試しました (そして失敗しました) 。cURL は、最終的な URL ではなく元の URL を含む CURLINFO を返します。file_get_contents $http_response_header には最終 URL が含まれていません。
SOおよびGoogle検索で利用可能な多数の例に従って、cURL呼び出しで設定できるオプションのバリエーションを試しましたが、どれも機能しませんでした。返される URL は常に元の URL であり、最終的な URL ではありません。
誰かがこれに遭遇したことがありますか?どうやって回避しましたか? これはおそらくばかげた質問ですが、https が問題なのでしょうか?
@str、これは、リダイレクト後に最終的な URL を生成していない cURL を使用する多くのバージョンの 1 つです。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);
$header = curl_getinfo($ch);
var_dump($response);
var_dump($header);
また、HEADER、FOLLOWLOCATION、RETURNTRANSFER、AUTOREFERER、およびその他のオプションを進行なしで切り替えようとしました。