Fetch Api incapaz de obter Session do servidor PHP

Estou usando o Fetch Api na minha aplicação.

Eu tenho uma página de servidor PHP para obter dados de session que já estavam definidos anteriormente. Parece assim:

<?php header('Content-Type: application/json; charset=UTF-8'); header('Access-Control-Allow-Origin: *'); session_start(); // $_SESSION['data'] already defined before $result = array(); // print_r($_SESSION['data']); if (isset($_SESSION['data'])) { $result = $_SESSION['data']; $result['code'] = 'ok'; } else { $result['code'] = 'error'; } echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES); 

Também obtive outra página html para obter os dados da session. Parece assim:

   $(function() { // use $.ajax $.ajax({ url: 'session.php', dataType: 'json' }) .done(function(res) { console.log(res); }); // end // use fetch fetch('session.php').then(function(res) { if (res.ok) { res.json().then(function(obj) { console.log(obj); }); } }); // end });  

O problema é que, quando eu uso $ .ajax (), os dados da session podem ser mostrados corretamente. Mas quando eu uso fetch (), os dados da session foram indefinidos.

Então, o que dá errado e como posso corrigi-lo? Obrigado!

Se você quiser fetch para enviar cookies, você deve fornecer a opção de credentials .

Consulte https://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch#Parameters para obter detalhes.

jquery ajax é uma solicitação usual do ajax e o navegador está enviando o header do cookie com o ID da session que identifica sua session.

fetch doesnt – em vez disso, uma nova session é criada sem quaisquer dados, envie o ID da session php com url ou header

dê uma olhada em: http://php.net/manual/en/session.idpassing.php