5

HTTP認証に問題があります。http authが必要なため、このURLのコンテンツを取得できませんでした。

コード:

<?php

$url = "http://www.abcdefg.com/12345/";

$username = 'username';
$password = 'password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");

$out = curl_exec($ch);

print "error:" . curl_error($ch) . "<br />";
print "output:" . $out . "<br /><br />";

curl_close($ch);

?>

問題は次のとおりです。実際のコンテンツを表示する代わりに、「302が見つかりました。ドキュメントはここに移動しました」と表示されます。

「http:// username:password@www.abcdefg.com/12345/」を試しましたが、機能しません。

このurl(1)にアクセスすると、ポップアップウィンドウでユーザー名とパスワードの入力を求められます。ただし、ポップアップウィンドウは別のurl(2)(sso認証サーバー)からのものです。認証に合格した場合。その後、再びurl(1)に戻ります。このとき、このurl(1)のコンテンツにアクセスできます。

私はfirebugを使用して、ブラウザから直接URLにアクセスして次のメッセージを取得します。

ステップ1

URL: GET http://www.abcdefg.com/12345/
Status: 302 Found
Protocol: http

ステップ2

URL: GET https://www.ssoauth.com/obrareq.cgi?wh=xxx wu=xxx wo=xxx rh=http://www.abcdefg.com ru=/12345/
Status: 302 Redirect
Protocol: https

ステップ3

URL: GET http://www.abcdefg.com/obrar.cgi?cookie=xxxxxxxxxxxxxxx
Status: 302 Found
Protocol: http

ステップ4

URL: GET http://www.abcdefg.com/12345/
Status: 200 OK
Protocol: http

次に、コンテンツを表示します…</ p>

これはクッキーと関係がありますか?php curlを使用してコンテンツを読み取るにはどうすればよいですか?

4

1 に答える 1

5

設定する必要があります:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

これにより、cURLは302に準拠し、追加のリクエストが生成されます。

于 2012-05-29T02:30:22.397 に答える