ホームページ > バックエンド開発 > PHPチュートリアル > PHP で Curl を使用してセッション Cookie を維持する場合、401 Unauthorized エラーを解決するにはどうすればよいですか?

PHP で Curl を使用してセッション Cookie を維持する場合、401 Unauthorized エラーを解決するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-01 13:08:20
オリジナル
675 人が閲覧しました

How Can I Resolve 401 Unauthorized Errors When Using Curl with PHP to Maintain Session Cookies?

Curl と PHP でセッションを維持する

問題

API に接続し、ユーザーを認証し、ユーザーの詳細にアクセスしようとすると、 Curl を使用して認証し、ユーザーの詳細を表示すると、ユーザーにセッションの問題が発生します。ログインは正常に機能しますが、ユーザーの詳細を表示すると 401 未承認エラーが発生します。これは、Curl がセッション Cookie を効果的に保存できないことを示しています。

解決策

問題は、CURLOPT_COOKIEFILE が存在しないことにあります。このオプションは、保存された Cookie を後続のリクエストで送信するために Curl にとって不可欠です。

マニュアルではこのオプションが定義されていますas:

"Cookie データを含むファイルの名前。Cookie ファイルは、Netscape 形式、またはファイルにダンプされた単純な HTTP スタイルのヘッダーにすることができます。名前が空の文字列の場合、Cookie はありませんはロードされていますが、Cookie の処理はまだ有効になっています。"

提供されたコードでは、リクエストの完了後に Cookie を保存するために Cookie jar が使用されています。ただし、CURLOPT_COOKIEFILE が設定されていない場合、Curl は今後のリクエスト中に保存されている Cookie を送信できなくなります。

コード例

この問題を解決するには、コードを変更して CURLOPT_COOKIEFILE オプションを含めます。 :

define("COOKIE_FILE", "cookie.txt");

// Login the user
$ch = curl_init('http://api.example.com/login/joe/smith');
curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
echo curl_exec ($ch);

// Read the session saved in the cookie file
echo "<br/><br/>";
$file = fopen("cookie.txt", 'r');
echo fread($file, 100000000);
echo "<br/><br/>";

// Get the users details
$ch = curl_init('http://api.example.com/user');
curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE);
curl_setopt ($ch, CURLOPT_COOKIEFILE, COOKIE_FILE); // Add the CURLOPT_COOKIEFILE option
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
echo curl_exec ($ch);
ログイン後にコピー

CURLOPT_COOKIEFILE オプションを組み込むことで、Curl後続のリクエストに対して保存された Cookie が正常に送信されるため、不正なエラーが排除され、ユーザーの詳細へのアクセスが許可されます。

以上がPHP で Curl を使用してセッション Cookie を維持する場合、401 Unauthorized エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート