>백엔드 개발 >PHP 튜토리얼 >세션 쿠키를 유지하기 위해 PHP와 함께 Curl을 사용할 때 401 무단 오류를 어떻게 해결할 수 있습니까?

세션 쿠키를 유지하기 위해 PHP와 함께 Curl을 사용할 때 401 무단 오류를 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-01 13:08:20662검색

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

Curl 및 PHP를 사용하여 세션 유지

문제

API에 연결하고, 사용자를 인증하고, 사용자 세부 정보에 액세스하려는 시도에서, Curl을 사용하여 사용자 세부 정보를 인증하고 볼 때 사용자는 세션 문제를 경험합니다. 로그인은 성공적으로 작동하지만 사용자 세부 정보를 보면 401 승인되지 않은 오류가 발생합니다. 이는 Curl이 세션 쿠키를 효과적으로 보존할 수 없음을 나타냅니다.

해결 방법

문제는 CURLOPT_COOKIEFILE이 없다는 것입니다. 이는 Curl이 후속 요청에서 저장된 쿠키를 전송하는 데 필수적인 옵션입니다.

이 옵션은 매뉴얼에 정의되어 있습니다. as:

"쿠키 데이터가 포함된 파일의 이름입니다. 쿠키 파일은 Netscape 형식일 수도 있고 파일에 덤프된 일반 HTTP 스타일 헤더일 수도 있습니다. 이름이 빈 문자열이면 쿠키가 없습니다. 로드되었지만 쿠키 처리는 여전히 활성화되어 있습니다."

제공된 코드에서는 요청이 완료된 후 쿠키를 저장하기 위해 쿠키 항아리가 사용됩니다. 그러나 CURLOPT_COOKIEFILE이 설정되지 않으면 Curl은 향후 요청 시 저장된 쿠키를 전송할 수 없습니다.

코드 예

문제를 해결하려면 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은 후속 요청에 대해 저장된 쿠키를 성공적으로 전송함으로써 무단 오류를 제거하고 사용자 세부 정보에 대한 액세스를 허용합니다.

위 내용은 세션 쿠키를 유지하기 위해 PHP와 함께 Curl을 사용할 때 401 무단 오류를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.