Fetch Api не может получить сеанс с сервера PHP

Я использую Fetch Api в своем приложении.

У меня есть страница сервера PHP, чтобы получить данные сеанса, которые уже были определены ранее. Это выглядело так:

<?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); 

Я также получил еще одну html-страницу, чтобы получить данные сеанса. Это выглядело так:

  <script> $(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 }); </script> 

Проблема в том, что когда я использую $ .ajax (), данные сеанса могут быть правильно показаны. Но когда я использую fetch (), данные сеанса не определены.

Итак, что не так, и как я могу это исправить? Благодаря!

Solutions Collecting From Web of "Fetch Api не может получить сеанс с сервера PHP"

Если вы хотите, чтобы fetch отправлял файлы cookie, вы должны credentials параметр credentials .

Подробнее см. https://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch#Parameters .

jQuery ajax – это обычный запрос ajax, и браузер отправляет заголовок файла cookie с идентификатором сеанса, который идентифицирует ваш сеанс.

fetch does not – вместо этого создается новый сеанс с любыми данными, отправляющими идентификатор сеанса php либо с URL-адресом, либо с заголовком

посмотрите: http://php.net/manual/en/session.idpassing.php