0

リダイレクト後の最終 URL でクエリ文字列を取得しようとしています。

https://example.com/oauth/auth?user=foo&password=bar

ブラウザで次のようにリダイレクトします。

https://example.com/?secret=8273761838346 

リダイレクト後の最終 URL のsecret={some number}部分が必要です。

file_get_contentscURL、さらには 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、およびその他のオプションを進行なしで切り替えようとしました。

4

0 に答える 0