PHP с использованием cURL: невозможно передать куки в Iframe - PullRequest
0 голосов
/ 22 ноября 2018

Некоторое время искали безуспешно, чтобы найти решение.Кроме того, я действительно не экспериментировал с php и REST API, поэтому извиняюсь за любые ошибки новичка.

Мне нужно 1) отправить POST-запрос на сервер и получить файлы cookie, связанные с моим логином 2) повторно использовать этикуки с URL на том же сервере, который запускает отчет.

Для этого я использую php и cURL.Следующий скрипт работает нормально:

    <?php
$homeurl = "http://localhost:8080/pentaho/j_spring_security_check?j_username=admin&j_password=admin&locale=en_US";
$reporturl = 'http://localhost:8080/pentaho/api/repos/:public:IframeDossier:IframeTest.prpt/viewer?label=fin';


$cookie_jar = tempnam('/Users/pierre/Vrac','cookie');
    if (!file_exists(realpath($cookie_jar))) touch($cookie_jar);

//login and get cookies
$ch = curl_init($homeurl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$return = curl_exec($ch);

// run report url using cookies
echo "execution report";
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
curl_setopt($ch, CURLOPT_URL, $reporturl);
$page = curl_exec($ch);
echo $page;


curl_close($ch);

?>

Я получаю ожидаемое возвращение:

" HTTP / 1.1 100 HTTP / 1.1 415 Set-Cookie: session-expiry = 1542901561740; Путь= / Set-Cookie: server-time = 1542894361740; Path = / Content-Length: 0 Дата: четверг, 22 ноября 2018 13:46:01 GMT Соединение: закрыть"

сейчас вместо этого я бынравится вставлять $ reporturl в Iframe.Я построил следующий Iframe:

<iframe id="inlineFrameExample"
    title="Inline Frame Example"
    width="1000"
    height="2000" src="http://localhost:8080/pentaho/api/repos/:public:IframeDossier:IframeTest.prpt/viewer?label=fin">
    </iframe>

Мой Iframe работает правильно, когда я вызываю его URL.

Я сейчас вызываю URL Iframe в своем коде.поэтому

curl_setopt($ch, CURLOPT_URL, $reporturl);

становится

curl_setopt($ch, CURLOPT_URL, http://localhost:8080/IframeTest.html);

проблема заключается в том, что теперь мой браузер запрашивает аутентификацию, в то время как мой Iframe должен уже иметь эту аутентификацию с использованием файлов cookie, полученных на первом шаге кода,Я, должно быть, делаю что-то не так, но не могу понять, что ... любая помощь очень ценится.

спасибо

...