libcurl을 사용하여 c 웹 사이트 (https가 아닌 http 웹 사이트)에 로그인하려고합니다. 문제는 로그인 후 도메인의 페이지에 접속하려고하면 내 세션이 만료되었다고 주장하는 페이지로 리디렉션되고 relog해야합니다.libcurl을 사용하여 세션이 만료되었습니다.
그런 다음 웹 사이트에서 사용하는 세션 쿠키에 문제가 있다고 가정했습니다. 이것은 쿠키를 처리하는 데 사용하는 코드입니다. 로그인 페이지로 갈 때 가장 먼저 요청할 때이 설정을 사용합니다.
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie.txt");
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie.txt");
curl_easy_setopt(curl, CURLOPT_COOKIESESSION, 1);
그런 다음 CURLOPT_VERBOSE를 사용하여 세션에 대한 정보를 얻었습니다. 참으로 쿠키를 받고 다음 요청에서 다시 보냅니다.
Set-Cookie: PHPSESSID=2d952576829405ce0d25689804b525ec; path=/
이 쿠키는 다음과 같이 다음과 같은 요청에 사용됩니다
Cookie: PHPSESSID=2d952576829405ce0d25689804b525ec
을 내가 cookie.txt에 갈 때 마지막으로 나는 또한이 쿠키를 참조하십시오
domain FALSE / FALSE 0 PHPSESSID 2d952576829405ce0d25689804b525ec
그래서 결론 내 질문은 : 어떻게 더 이상 만료 된 세션의 문제를 해결할 수 있습니까? 인터넷상의 대부분의 출처는 쿠키를 작동시키는 방법을 설명하고 있지만이 경우 쿠키에 문제가 나타나지 않습니다.
편집 : Vasiliy Faronov에서 제공하는 일반적인 방법을 사용하여 일반적으로 두 개의 추가 쿠키가 자바 스크립트 응답에서 생성된다는 것을 알았습니다. 분명히 libcurl은 javascript를 해석하지 않으므로 쿠키를 생성하지 않습니다. 쿠키의 가치를 에뮬레이트 한 후 모든 것이 작동하므로이 문제를 해결할 것을 고려할 것입니다.