Завершение сеанса возврата Laravel истекло - PullRequest
0 голосов
/ 04 мая 2018

Я использую curl с laravel, и мне нужно запустить функцию внутри контроллера.

но когда я ставлю

dd('test'); 

после пространства имен это print.but, когда я пытаюсь с функцией a сеанс истек

это код для скручивания

// Préparation des données
  $data = [];
  $data["code__client"] = "VERTDIS13";
  $data["status"] = "90";
  $data["numero__incident"] = "INC544842";

  // On tranforme le tableau PHP en objet JSON
  $data = json_encode($data);

  // Envoi au serveur
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL,"http://localhost:3000/notification/server");
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, "data=" . $data);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_COOKIESESSION, true);
  curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true);
  $server_output = curl_exec($ch);
  $error = curl_error($ch);
  if($error!=""){ dd($error);}
  curl_close($ch);


  // Ici pour tester j'affiche ce que le serveur renvoi
  return $server_output;

внутри контроллера я пытался напечатать данные, но это не работает

вы видите проблему?

спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

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

$cookie_file = "/the/path/to/your/cookiefile.txt";
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

Измените путь в $cookie_file на полный путь файловой системы к создаваемому вами текстовому файлу, и curl сохранит файлы cookie сеанса, которые возвращаются с ответами, и использует их в последовательных запросах. Чтобы это работало, я думаю, вам следует удалить строку

curl_setopt($ch, CURLOPT_COOKIESESSION, true);

потому что это советовало бы curl игнорировать куки в файле.

Кроме того, я думаю, что линия

curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true); 

также устарел, потому что вы не предоставляете базовые учетные данные для аутентификации в своем запросе curl.

0 голосов
/ 04 мая 2018

Я полагаю, вы извлекаете данные из приложения? Мне кажется, что токен CSRF отсутствует или фактически недействителен.

for ($i = 0; $i < $metas->length; $i++){
$meta = $metas->item($i);
  if($meta->getAttribute('name') == 'csrf-token')
    $csrfToken = $meta->getAttribute('content');
}
$headers = array();
$headers[] = "Cookie: X-CSRF-Token=$csrfToken";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

Подробнее о CSRF & cURL

Попробуй

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...