Прежде всего, что я пытаюсь сделать: я пытаюсь получить доступ к странице входа, чтобы я мог войти в систему. Сайт является HTTPS и требует установки файлов cookie, поэтому я использую jquery для запуска PHP + Curl, чтобы получить эту страницу для меня и сохранить куки. Что ж, мне удалось получить файлы cookie, но я продолжаю получать всплывающее окно о том, что файлы cookie не установлены. Поэтому я посмотрел на это намного больше и обнаружил, что javascript выполняет начальную проверку, чтобы увидеть, включены ли файлы cookie:
function initLogin(){
// check if cookie is enabled so applications can run
if (document.cookie == "") {
alert("Cookies are disabled. Cannot access mid-tier with this setting.\nPlease configure your browser to accept cookies.");
return;
}
....Other Code...
}
Я просмотрел почти все сообщения на этом форуме и перепробовал кучу разных кодов, но безуспешно. Так вот вопрос как пройти этот момент? Мое понимание: Jquery вызывает php-скрипт на прокси-сервере и вызывает curl, чтобы получить веб-страницу. Затем Curl сохранит файлы cookie для последующего использования, но как вы их используете. Я думал, что достаточно просто установить их в файле cookie, но, похоже, я ошибался. Поэтому я устал просто устанавливать для них CURLOPT_COOKIE, но я не знаю, правильно ли это.
Вот копия кода, который я запускаю:
function getpage(){
$fullurl = "https://url/arsys/shared/login.jsp?/arsys/home";
$ch = curl_init ();
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $fullurl);
$output = curl_exec ($ch);
preg_match_all('|Set-Cookie: (.*);|U', $output, $results);
$newcookies = implode(';', $results[1]);
echo "<br>COOKIES:" . $newcookies;
curl_setopt ($ch, CURLOPT_COOKIE, $newcookies);
echo curl_error($ch) . " " . $output;
curl_close($ch);
}
Вывод из приведенного выше кода: COOKIES:JSESSIONID=B4830242479D3DFD3235D17EE6A4DEB8;q=""HTTP/1.1 200 OK Cache-Control: no-cache Content-Type: text/html;charset=UTF-8 Server: Microsoft-IIS/7.5 Set-Cookie : JSESSIONID=B4830242479D3DFD3235D17EE6A4DEB8; Путь=/arsys; Безопасный набор файлов cookie: q=""; Истекает = четверг, 01 января 1970 г., 00:00:10 по Гринвичу; Path=/ Дата: пятница, 20 апреля 2012 г., 17:57:17 GMT Content-Length: 35657
Я также пробовал:
function getpage(){
$ckfile = "cookies/cookie.txt";
$fullurl = "https://url/arsys/shared/login.jsp?/arsys/home";
$ch = curl_init ();
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $fullurl);
$output = curl_exec ($ch);
curl_close($ch);
}
Файлы cookie сохраняются в правильном файле, но все равно получают то же сообщение.
Я попробовал код в Google, и он отлично работает, это javascript, который меня останавливает.