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 サイトの他の関連記事を参照してください。